假设我们有一个像这样的对象数组:
dataSrc : 'features'
现在我想为这个数组创建一个sum变量,该变量包含cur isn&#t; t EUR和USD的amount字段的总和。更具体地说,我想要一个像array = [{
amount: 1000,
cur: EUR
}, {
amount: 1500,
cur: GBD
}, {
amount: 2000,
cur: USD
}, {
amount: 2500,
cur: SSL
}]
这样的变量,它等于sumOther
。此变量包含cur不是EUR和USD的金额之和。
答案 0 :(得分:2)
过滤,减少,您已完成。
var sumOther = array
.filter(y => y.cur != EUR && y.cur != USD)
.reduce((a, b) => a.amount + b.amount);
< ES6版本:
var sumOther = array
.filter(function(y) { return y.cur != EUR && y.cur != USD })
.reduce(function(a, b) { return a.amount + b.amount });
答案 1 :(得分:2)
您可以使用一个简单的循环,在每次迭代时测试cur
的值,并为所需的值添加总数。
或者您可以使用数组.filter()
和.reduce()
方法:
var array = [
{amount: 1000, cur: 'EUR'},
{amount: 1500, cur: 'GBD'},
{amount: 2000, cur: 'USD'},
{amount: 2500, cur: 'SSL'}
]
var total = array.filter(function(v) { return !/EUR|USD/.test(v.cur) })
.reduce(function(acc, current) { return acc + current.amount }, 0)
console.log(total)
答案 2 :(得分:1)
您可以使用数组map方法
希望此代码段有用
var sum = 0; // define a variable for adding amount
array.map(function(item){
// check if currency is not EUR or GBD, then update the sum
if(item.cur !=='EUR' && item.cur !=='GBD'){
sum = sum+item.amount
}
})
console.log(sum)
答案 3 :(得分:0)
排除字符串未经过硬编码的示例:
➜ ~ clang -g -fsanitize=memory st.cpp
➜ ~ ./a.out
==16031==WARNING: MemorySanitizer: use-of-uninitialized-value
#0 0x490954 (/home/hailin/a.out+0x490954)
#1 0x7f21b72f382f (/lib/x86_64-linux-gnu/libc.so.6+0x2082f)
#2 0x41a1d8 (/home/hailin/a.out+0x41a1d8)
SUMMARY: MemorySanitizer: use-of-uninitialized-value (/home/hailin/a.out+0x490954)
Exiting