Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.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 JS reduce-对象中仅求和的数组长度_Javascript_Arrays_Object_Ecmascript 6_Reduce - Fatal编程技术网

Javascript JS reduce-对象中仅求和的数组长度

Javascript JS reduce-对象中仅求和的数组长度,javascript,arrays,object,ecmascript-6,reduce,Javascript,Arrays,Object,Ecmascript 6,Reduce,我有以下数据结构: const arr = [ {key: 0, x: [], y: []}, {key: 0, x: [], y: []} ] 我想检查所有的数组是否都是空的,我有什么办法可以使用reduce来做到这一点?到目前为止,我的代码是: arr.reduce((count, acc) => { return acc !== 'key' ? count + acc.length : count }, 0) reduce是一种有点笨重的方法,您在

我有以下数据结构:

const arr = [    
    {key: 0, x: [], y: []},
    {key: 0, x: [], y: []}
]
我想检查所有的数组是否都是空的,我有什么办法可以使用reduce来做到这一点?到目前为止,我的代码是:

arr.reduce((count, acc) => {
    return acc !== 'key' ? count + acc.length : count
}, 0)

reduce
是一种有点笨重的方法,您在数组中的项上循环,而不是(我认为)您期望的键

使用
数组。请改为使用每个

const arr=[
{键:0,x:[],y:[]},
{键:0,x:[],y:[]}
]
常数arr2=[
{键:0,x:[1,2,3],y:[]},
{键:0,x:[],y:[]}
]
功能区空(a){
返回a.every(i=>i.x.length==0&&i.y.length==0);
}
控制台日志(区域空(arr));

控制台日志(arallempty(arr2))
您可以从对象中取出
,检查所有长度是否为零

const
数组=[{key:0,x:[],y:[]},{key:0,x:[],y:[]}],
allZero=array.every({key,…o})=>
Object.values(o).every({length})=>!length));

console.log(allZero)
因为
acc
将是数组中的对象,所以您应该检查数组中的对象属性。为此,请使用
Object.values
,以及另一个
reduce
用于每个对象内的数组,并排除

const arr=[
{键:0,x:[],y:[]},
{键:0,x:[],y:[]}
];
const res=arr.reduce((a,{key,{c})=>a+Object.values(c).reduce((e,{length:f})=>e+f,0),0);
控制台日志(res)
您可以对
对象.values
使用
过滤器()
,仅获取数组值。然后
flat()
并将长度添加到结果中

const arr=[
{键:0,x:[],y:[]},
{键:0,x:[],y:[]}
]
让res=arr.reduce((计数,acc)=>{
返回count+Object.values(acc).filter(x=>x.constructor==Array).flat()长度
}, 0)

console.log(res)
Sum仅使用
Array.reduce()在对象中求数组的长度

const arr=[
{键:0,x:[],y:[],abc:“hsgg”},
{键:0,x:[1,2,3,4],y:[1,2]}
];
常数c=arr.reduce((计数,对象)=>{
Object.values(obj.forEach)(v=>{
如果(Array.isArray(v))计数+=v.length;
});
返回计数;
}, 0);
控制台日志(c)是更好的选择。您可以迭代对象的所有值并测试它们是否是数组,如果是,则返回
false
,如果它们不是空的
每一个
都将在找到非空数组后立即停止,或结束迭代,以先到者为准

const arr=[
{键:0,x:[],y:[]},
{键:0,x:[],y:[]}
];
常数arr2=[
{键:0,x:[],y:[1]},
{键:0,x:[],y:[]}
];
常量空=(arr)=>arr.every(el=>{
对于(让v为对象值(el)){
if(Array.isArray(v)和&v.length>0)返回false;
}
返回true;
});
控制台日志(allEmpty(arr));

console.log(allEmpty(arr2))
你想检查哪个属性?你想检查
x
y
数组的长度吗?我想对所有数组的长度求和,它实际上只是
x
&
y
或者还有更多的属性是数组吗?你想知道长度是多少,或者知道它们是否都是零?