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
或者还有更多的属性是数组吗?你想知道长度是多少,或者知道它们是否都是零?