Удалить массив из массива массивов - PullRequest
0 голосов
/ 27 января 2020

Я совершенно новичок в Javascript. Я работаю с данными из бизнес-базы данных и хочу удалить массив из массива массивов.

У меня есть этот массив массива:

var results = [ [#null, null], ['miglioramento', 30], ['correttiva',45] ];

Я хочу удалить первый массив: [#null, null] из результатов, потому что я хочу получить этот массив:

results = [ ['miglioramento', 30], ['correttiva',45] ];

Как я могу это сделать?

Я действительно заранее благодарен вам!

Ответы [ 5 ]

1 голос
/ 27 января 2020

Предполагая, что первая запись вашего массива будет [null, null], а не [#null, null]. Таким образом, вы фильтруете все пустые массивы, содержащие только null в качестве записей.

results.filter((arr) => arr.filter((entry) => entry !== null).length);

0 голосов
/ 27 января 2020

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

var results = [
  [null, null],
  ['miglioramento', 30],
  ['correttiva', 45]
];


const checkNull = arr => arr.every(el => el != null);

const res = results.filter(el => checkNull(el));

console.log(res);
0 голосов
/ 27 января 2020

Для внутренних массивов, содержащих только два элемента, вы можете использовать .filter() и destructure , чтобы проверить, не равен ли один из элементов null. В этом случае предикат фильтра вернет true, в котором будет сохранен внутренний массив.

const data = [[null, null], ['miglioramento', 30], ['correttiva',45]];

const res = data.filter(([e1, e2]) => e1 !== null || e2 !== null);
console.log(res);

Если ваши внутренние массивы могут иметь более двух элементов, вы можете использовать .some(), чтобы убедиться, что некоторый элемент в внутренний массив не null. Если предикат для .some() истинен для любого элемента в вашем внутреннем массиве, то возвращаемое значение .some() также будет true, что заставит фильтр сохранить внутренний массив как часть конечного результата.

const data = [[null, null], ['miglioramento', 30], ['correttiva',45]];

const res = data.filter(
  inner => inner.some(elem => elem !== null)
);
console.log(res);
0 голосов
/ 27 января 2020

var results = [ [null, null], ['miglioramento', 30], ['correttiva',45] ]
results.shift()
console.log(results)
0 голосов
/ 27 января 2020

Вы можете использовать slice функцию: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/slice

const array = [0, 1, 2, 3]
const slicedArray = array.slice(1)
console.log(slicedArray)
// print : [1, 2, 3]
...