Как удалить элемент в объекте массива

множество : массив перед [ {id: 1, тест: [null, 2, 3]}, {id: 2, тест: [1, 2, 3] }]

массив после [ {id: 1, тест: [2, 3]}, {id: 2, тест: [1, 2, 3] }] как удалить значение null?

Я пытался использовать эту функцию, но она не работает, что не так с этой функцией в массиве?

var filtered = fullArray.filter(function (object) {
    return object.test !== null;
  });

🤔 А знаете ли вы, что...
JavaScript используется для разработки современных одностраничных приложений (SPA), где весь контент загружается асинхронно.


50
4

Ответы:

Вы должны перебрать свой вложенный массив и применить к нему filter вместо того, чтобы сравнивать его с null

const fullArray = [{
  id: 1,
  test: [null, 2, 3]
}, {
  id: 2,
  test: [1, 2, 3]
}]


var filtered = fullArray.map(function(obj) {
  return ({
    ...obj,
    test: obj.test.filter(elm => elm)
  })
});

console.info(filtered)

Объяснение:

Эта первая «внешняя» карта перебирает элементы вашего массива, беря каждый элемент (obj) и возвращая что-то

var filtered = fullArray.map(function(obj) {
  ...
});

Возвращаемое значение:

return ({
    ...obj,
    test: obj.test.filter(elm => elm)
  })

Является копией obj, сделанной с помощью оператора спреда, с переопределением нашего атрибута test, который будет содержать выходные данные метода obj.test.filter(elm => elm).

Array.filter — это метод, который выполняет итерацию по массиву и возвращает элемент, только если заданный предикат (функция, возвращающая логическое значение) возвращает значение true. В нашем случае, если элемент массива test имеет значение null, это означает, что это false, и тогда он будет удален из массива.


Решено

В JavaScript метод Array.filter() можно использовать для удаления элементов из массива на основе условия. В вашем случае вы можете использовать Array.filter() для удаления нулевых значений из тестового массива каждого объекта во входном массиве. Вот возможная реализация:

function removeNullValues(array) {
  return array.map(obj => {
    obj.test = obj.test.filter(val => val !== null);
    return obj;
  });
}

Функция принимает массив объектов в качестве входных данных, где каждый объект имеет свойство id и тестовое свойство, представляющее собой массив, содержащий нулевые значения. Функция возвращает новый массив объектов, где тестовый массив каждого объекта больше не содержит нулевых значений.

Метод Array.map() используется для перебора каждого объекта во входном массиве и возврата нового объекта с отфильтрованным тестовым массивом. Метод Array.filter() используется для удаления нулевых значений из тестового массива каждого объекта. Стрелочная функция val => val !== null используется в качестве функции фильтра, которая возвращает true для всех значений, отличных от null.

Вы можете вызвать функцию следующим образом:

const array = [
  { id: 1, test: [null, 2, 3] },
  { id: 2, test: [1, 2, 3] }
];

const result = removeNullValues(array);

console.info(result);
// Output: [ { id: 1, test: [ 2, 3 ] }, { id: 2, test: [ 1, 2, 3 ] } ]

Это должно дать вам желаемый результат.


Я предлагаю два простых способа:

let fullArray = [ { id: 1, test: [ null, 2, 3 ] }, { id: 2, test: [ 1, 2, 3 ] } ];

// first way
let filtered = fullArray.map(m => ({
  id: m.id, 
  test: m.test.filter(f => f !== null)
}));

console.info(filtered);

// second way
fullArray.forEach((fe) => {
  fe.test = fe.test.filter(f => f !== null);
  return fe;
});

console.info(fullArray);

спасибо, ребята, за направление, это действительно помогло мне