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
),因为它不会太长,而且会让事情变得更加清晰。这个答案来自低质量的帖子。添加一些解释,即使代码是自解释的