在数组var a=[
{name:“1”,pre1_day_off:1,pre2_day_off:1,pre3_day_off:1},
{name:“2”,pre1_day_off:2,pre2_day_off:2,pre3_day_off:1},
{name:“3”,pre1_day_off:3,pre2_day_off:3,pre3_day_off:1}
]中,如何将三个对象中的多个如pre1_day_off1相加,pre2_day_off2相加,pre3_day_off3相加,生成新的数组[sum1,sum2,sum2…sumn]
使用类似的逻辑来对数组中的对象进行求和。以下是一个示例代码:
var a = [
{name:"1", pre1_day_off:1, pre2_day_off:1, pre3_day_off:1},
{name:"2", pre1_day_off:2, pre2_day_off:2, pre3_day_off:1},
{name:"3", pre1_day_off:3, pre2_day_off:3, pre3_day_off:1}
];
var sums = [];
for (var key in a[0]) {
if (a[0].hasOwnProperty(key) && key.startsWith('pre')) {
sums.push(a.reduce((acc, curr) => acc + curr[key], 0));
}
}
console.log(sums);
在这个代码示例中,我们使用for...in
循环遍历数组a
中第一个对象的每个属性。我们使用startsWith()
方法检查属性名称是否以’pre’开头,以确保只计算这些属性。然后,我们使用reduce()
方法对数组a
中的每个对象进行求和操作,并将结果添加到sums
数组中。最后,使用console.log(sums)
打印输出包含所有总和的数组。
这段代码将计算pre1_day_off
、pre2_day_off
和pre3_day_off
的总和,并将它们放入一个名为sums
的数组中。如果你要计算其他属性,只需在循环中添加相应的条件即可。
hasOwnProperty
是一个 JavaScript 方法,用于检查一个对象是否具有给定的属性名称。这个方法只能检查对象本身的属性,而无法检查对象原型链中的属性。
例如,如果我们有一个对象 obj
,我们可以使用 obj.hasOwnProperty('propName')
来检查 obj
是否有一个名为 ‘propName’ 的属性。如果这个属性存在,那么该方法将返回 true
;否则,它将返回 false
。
需要注意的是,hasOwnProperty
无法检查对象原型链中是否具有给定的属性。也就是说,如果一个对象的原型链中有一个属性,但是这个对象本身没有这个属性,那么 hasOwnProperty
方法是无法检测到这个属性的存在的。
以下是一些示例代码:
let obj = {
name: 'John',
age: 30
};
console.log(obj.hasOwnProperty('name')); // 输出: true
console.log(obj.hasOwnProperty('height')); // 输出: false
console.log(obj.hasOwnProperty('prototype')); // 输出: false
在这个例子中,obj
对象有 ‘name’ 和 ‘age’ 两个属性,所以 obj.hasOwnProperty('name')
和 obj.hasOwnProperty('age')
都返回 true
。但是,obj
对象没有 ‘height’ 属性,所以 obj.hasOwnProperty('height')
返回 false
。另外,‘prototype’ 不是 obj
对象的一个属性,所以 obj.hasOwnProperty('prototype')
也返回 false
。
startsWith
是字符串的一个方法,用于检查一个字符串是否以特定的前缀开始。
在Python中,startsWith
的使用方式如下:
str.startsWith(prefix[, start[, end]])
在JavaScript中,startsWith
的使用方式如下:
str.startsWith(prefix[, start[, end]])
在这些语法中,prefix
是要检查的字符串或字符串元组,start
(可选)是要在字符串中检查前缀的开始位置,end
(可选)是要在字符串中检查前缀的结束位置。
这两个方法都返回一个布尔值。如果字符串以指定的前缀开头,则返回True;如果字符串不是以指定的前缀开头,则返回False。注意,在JavaScript中,如果字符串以元组的任何项目开头,startsWith
也会返回True。
@漏刻有时