Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/426.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从父数组中筛选空数组_Javascript_Node.js_Lodash - Fatal编程技术网

Javascript 从父数组中筛选空数组

Javascript 从父数组中筛选空数组,javascript,node.js,lodash,Javascript,Node.js,Lodash,在添加新元素之前,如何从父数组中完全删除空数组 我有一个这样的结构 var parentArray = [ ['123', '345'], [], ['12'] ] 我想在添加新数组之前删除索引1处的数组 我已尝试过此功能,但无法将其删除: parentArray.filter((array, index) => { if (array.length === 0) { parentArray.splice(index, 1); } }) parentArr

在添加新元素之前,如何从父数组中完全删除空数组

我有一个这样的结构

var parentArray = [ ['123', '345'], [], ['12'] ]
我想在添加新数组之前删除索引1处的数组

我已尝试过此功能,但无法将其删除:

parentArray.filter((array, index) => {
    if (array.length === 0) {
        parentArray.splice(index, 1);
    }
})
parentArray.push(['435']);

console.log(parentArray);  //Still give  [["123", "345"], [], ["12"]]
用于:

parentArray = _.filter(parentArray, function (array) {
    return array.length > 0;
})

您不应该在filter方法中改变数组。 如果要保留该项,回调函数应返回true,否则返回false

const parentArray = [['123', '345'], [], ['12']];

const filteredArray = parentArray.filter( item => item.length !== 0);

console.log(filteredArray)

下面的代码保留非空的项,并将它们存储在结果中

const result = _.filter(parentArray, (item, i) => {
  return !_.isEmpty(item);
});
console.log(result);

不需要lodash或第三方库,这里是您实际需要的

var number=[['123'、['345']、[]、['12']]
结果=数字。过滤器(x=>x.length>0);

控制台日志(结果)好的,首先如上所述,在迭代时不要对任何iterable进行变异。
Array.filter
根据给定的条件返回一个新数组,它不会更改调用它的数组。
如果要保留原始parentArray并创建一个新数组,但parrentArray中没有空数组,请执行以下操作

let parentArray2 = parentArray.filter(e=>e.length !== 0)
这将为您提供由
parentArray2
引用的新数组,该数组将
[['123'、['345']、['12']]

并且
parentArray
保持原样,然后您可以将新数组推入
parentArray2

如果不想保留原始的
parentArray
,请执行以下操作
parentArray=parentArray.filter(e=>e.length!==0)

父数组将用一个新数组初始化
[[['123',['345'],['12']]

然后,您可以将任意元素are数组或对象推入可以使用lodash的
父数组

如果谓词返回
true
,则Reject将删除项;对于空数组,isEmpty将返回
true

var parentArray=[['123'、['345']、[]、['12']]
var result=u0.reject(parentArray,0.isEmpty)
console.log(结果)

你是否尝试过
.filter
不要尝试在迭代数组时对数组进行变异,而是使用
.filter
,根据你是否希望包含该项返回一个truthy/false值(不需要lodash)尝试
.map
。从技术上讲,我想提到这一点,您还可以将谓词缩短为
x=>x.length
,因为零是假的,其他的都是真的。然而,我更喜欢更明确的
>0
(或者
!=0
),因为它不会太长,而且会让事情变得更加清晰。这个答案来自低质量的帖子。添加一些解释,即使代码是自解释的