Javascript:对象的总长度
Javascript : total length of an object
本文关键字:对象 Javascript 更新时间:2023-09-26
我有一个像这样的对象:
MyObject {
Object1: ["12345", "67890"]
Object2: ["74185"]
Object3: ["29630", "789654"]
}
我需要得到元素的总数。在这个例子中,我应该得到5。
使用for
循环遍历对象,在增加长度计数器之前检查键是否为Array:
var count = 0;
for (var key in MyObject)
if (MyObject[key] instanceof Array)
count += MyObject[key].length;
var MyObject = {
Object1: ["12345", "67890"],
Object2: ["74185"],
Object3: ["29630", "789654"]
}
var count = 0;
for (var key in MyObject)
if (MyObject[key] instanceof Array)
count += MyObject[key].length;
console.log(count);
您可以使用reduce
为所有!
var totalLength = Object.keys(MyObject).reduce(function(total, key) {
return total += MyObject[key].length;
}, 0);
您需要遍历map的所有键,并对每个数组的长度求和。
功能方式:
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)
使用for in
循环遍历所有对象,并通过查找数组的长度来添加计数。
当使用for in
时,建议使用hasOwnProperty()
,以避免由于原型继承而迭代不必要的属性。
var count = 0;
for (var key in MyObject) {
if (MyObject.hasOwnProperty(key)) {
count += MyObject[key].length;
}
}
console.log(count);
您可以考虑以下代码:
- 使用
Object.keys()
来"循环"对象属性 - 使用每个
array
的length
属性来知道数组中有多少项。 - 相应增加变量
count
请注意,你的MyObject
是畸形的,因为:
- 有一个赋值操作符(=)。
- 每个属性后面缺少逗号。
- 不使用var(我假设你不希望MyObject作为全局对象)。
var myObject = {
Object1: ["12345", "67890"],
Object2: ["74185"],
Object3: ["29630", "789654"]
};
var count = 0;
Object.keys(myObject).map(function(prop) {
count+= myObject[prop].length;
});
alert(count);
我知道我迟到了,但为了完整,这里是我使用ES2019引入的方法<Array>.flat()
的方法。首先,你可以用Object.values()
获得所有数组,然后用flat()
将所有数组合并在一起,以获得总长度。
由于flat()
-方法在每次默认情况下只平坦化一个层,因此可以将2
作为参数(depth)传递。
就代码长度而言,这是迄今为止我见过的最有效的解决问题的方法。
const myobject = {
Object1: ["12345", "67890"],
Object2: ["74185"],
Object3: ["29630", "789654"],
};
console.log(Object.values(myobject).flat(2).length);
如果myobject
有嵌套数组,你也可以使用Infinity
。只是为了确保;)
const myobject = {
Object1: [
"1",
"2",
[
["3", "4"],
["5", "6"],
],
],
Object2: ["7"],
Object3: ["8", "9"],
};
console.log(Object.values(myobject).flat(Infinity).length);
相关文章:
- 面向对象JavaScript中的私有函数
- 对象 Javascript 中的标签无效 - 想要添加事件列表器
- 将字符串转换为对象 javascript/jquery
- 正在检查对象javascript中是否存在嵌套属性
- 时间-日期对象JavaScript getUTCMilliseconds
- 仅在对象(javascript)中解析值
- 使用对象(JavaScript或jQuery)填充选择下拉列表
- 引用另一个对象javascript中的对象
- 如何删除列表中的对象?Javascript nodejs和下划线
- 无法从日期对象javascript获取日期和月份
- 如何在if语句中使用对象-Javascript
- 对象javascript错误
- 对象Javascript的少数实例
- 位置对象Javascript
- 将字符串传递到对象javascript中
- 获取对象Javascript或jQuery的最后一个值
- 鼠标接近对象Javascript
- 这个mixins代码是书中的错误吗;面向对象JavaScript的原理”;
- 使用闭包编译器编写更好的面向对象JavaScript完整示例代码
- 访问对象javascript数组中的对象属性值