Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/457.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_Arrays - Fatal编程技术网

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以$的形式在源数据结构上迭代。每个数组或仅在其项上迭代,忽略命名属性或对象作为参数,而不是类似对象的数组。你们可以找到一个简短的片段来说明我的观点。