Javascript 获取具有非空数组作为值的属性的对象键
我有一个数组:Javascript 获取具有非空数组作为值的属性的对象键,javascript,arrays,Javascript,Arrays,我有一个数组: 417: Array(2) 0: 24301 1: 24300 length: 2 __proto__: Array(0) 418: [24562] length: 419 __proto__: Array(0) 现在,我需要从这个数组arr中获取所有长度大于0的密钥。在这种情况下,我需要的答案是['417','418'] 我尝试使用每个循环和每个元素的长度进行过滤,如下所示: 我的代码如下: console.log(arr_of_sel_units);
417: Array(2)
0: 24301
1: 24300
length: 2
__proto__: Array(0)
418: [24562]
length: 419
__proto__: Array(0)
现在,我需要从这个数组arr中获取所有长度大于0的密钥。在这种情况下,我需要的答案是['417','418']
我尝试使用每个循环和每个元素的长度进行过滤,如下所示:
我的代码如下:
console.log(arr_of_sel_units);
$.each(arr_of_sel_units, function(k, v) {
console.log(v.length)
});
但是,它返回的错误是无法读取未定义的属性“length”如果arr使用了正确的数据类型对象,您可以跨对象.keys执行Array.prototype.filter。但是,它将适用于您的表示法,就像Array本质上是一个对象一样:
常量src={a:['1','2','3',b:[],c:['1',d:[]},
结果=Object.keysrc.filterkey=>src[key].length
console.logresult使用Object.entries、过滤器
设arr=[];
arr[a]=[1,2,3];
arr[b]=[];
arr[c]=[1];
arr[d]=[];
const res=Object.entriesar
.filter[,value]=>value.length>0
.map[键]=>键;
console.logres;尝试让arr={};命名数组属性不是一个好主意,使用数组的对象类型。实际上,我已经用确切的问题更新了,请您再看一遍。很抱歉给你添麻烦,我收到你的建议了。但是,你能建议我如何为“let arr_of_sel_units=[];$”推送这些值吗。每一个建筑,函数项,选择单元的v{arr\u[v]=[];}`@AayushDahal:正是由于不正确的数据类型,您不能使用$.each以$的形式在源数据结构上迭代。每个数组或仅在其项上迭代,忽略命名属性或对象作为参数,而不是类似对象的数组。你们可以找到一个简短的片段来说明我的观点。