Javascript:对象的总长度
我有一个这样的物体: MyObject{ 反对意见1:[1234567890] 反对二:[74185] 反对意见3:[29630789654] } 我需要得到元素的总数。在这个例子中,我应该得到5。我正试图以最有效的方式执行此操作。使用for循环在对象中循环,在递增长度计数器之前检查以确保键是数组:Javascript:对象的总长度,javascript,arrays,object,Javascript,Arrays,Object,我有一个这样的物体: MyObject{ 反对意见1:[1234567890] 反对二:[74185] 反对意见3:[29630789654] } 我需要得到元素的总数。在这个例子中,我应该得到5。我正试图以最有效的方式执行此操作。使用for循环在对象中循环,在递增长度计数器之前检查以确保键是数组: var count = 0; for (var key in MyObject) if (MyObject[key] instanceof Array) count += MyObje
var count = 0;
for (var key in MyObject)
if (MyObject[key] instanceof Array)
count += MyObject[key].length;
var MyObject={
反对意见1:[1234567890],
反对二:[74185],
反对意见3:[29630789654]
}
var计数=0;
对于MyObject中的var键
如果MyObject[key]实例为数组
count+=MyObject[key]。长度;
console.logcount 您需要迭代映射的所有键,并对每个数组的长度求和 执行此操作的功能方式:
function add(a, b) { return a + b; }
Object.keys(test).map(function(key) {
return test[key].length
}).reduce(add);
或者,如果您使用的是后一个Node.js版本:
Object.keys(test).map(key => test[key].length).reduce((a, b) => a + b)
你可以用reduce做任何事情
var totalLength = Object.keys(MyObject).reduce(function(total, key) {
return total += MyObject[key].length;
}, 0);
使用for in-loop迭代所有对象,并通过查找数组的长度来添加计数
在its中使用for时,建议使用hasOwnProperty,以避免由于原型继承而迭代不必要的属性
var count = 0;
for (var key in MyObject) {
if (MyObject.hasOwnProperty(key)) {
count += MyObject[key].length;
}
}
console.log(count);
可以考虑以下代码:
使用Object.keys循环对象属性。 使用每个数组的属性长度可以知道数组中有多少项。 相应地增加变量计数。 请注意,您的MyObject格式不正确,因为: 存在和赋值运算符=。 每个属性后面缺少逗号。 不使用var我假设您不希望MyObject作为全局对象。 变量myObject={ 反对意见1:[1234567890], 反对二:[74185], 反对意见3:[29630789654] }; var计数=0; Object.keysmyObject.mapfunctionprop{ count+=myObject[prop]。长度; };警报计数;对象没有长度。如果要对其数组值元素的长度求和,请显式执行此操作。只需编写一个简单的循环。是所有对象都具有此结构,还是希望能够对对象图中的每个对象进行常规计数?您需要返回total+MyObject[key].length;对于simplicity@Arg0n:OP询问最有效的方法,这个答案肯定描述了这一点。