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

Javascript:对象的总长度

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

我有一个这样的物体:

MyObject{ 反对意见1:[1234567890] 反对二:[74185] 反对意见3:[29630789654] } 我需要得到元素的总数。在这个例子中,我应该得到5。我正试图以最有效的方式执行此操作。

使用for循环在对象中循环,在递增长度计数器之前检查以确保键是数组:

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询问最有效的方法,这个答案肯定描述了这一点。