Javascript 在对象数组中查找特定元素并添加它们
假设我们有这样一个对象数组:Javascript 在对象数组中查找特定元素并添加它们,javascript,arrays,object,sum,Javascript,Arrays,Object,Sum,假设我们有这样一个对象数组: array = [{ amount: 1000, cur: EUR }, { amount: 1500, cur: GBD }, { amount: 2000, cur: USD }, { amount: 2500, cur: SSL }] 现在我想为这个数组创建一个sum变量,它包含cur不是EUR和USD的amounts字段的总和。更具体地说,我想要一个类似于sumOther的变量,它等于1500+2500=4000。此变量包含
array = [{
amount: 1000,
cur: EUR
}, {
amount: 1500,
cur: GBD
}, {
amount: 2000,
cur: USD
}, {
amount: 2500,
cur: SSL
}]
现在我想为这个数组创建一个sum变量,它包含cur不是EUR和USD的amounts字段的总和。更具体地说,我想要一个类似于
sumOther
的变量,它等于1500+2500=4000
。此变量包含cur不是欧元和美元的金额之和。过滤、减少,就完成了
var sumOther = array
.filter(y => y.cur != EUR && y.cur != USD)
.reduce((a, b) => a.amount + b.amount);
var sumOther = array
.filter(function(y) { return y.cur != EUR && y.cur != USD })
.reduce(function(a, b) { return a.amount + b.amount });
过滤,减少,你就完成了
var sumOther = array
.filter(y => y.cur != EUR && y.cur != USD)
.reduce((a, b) => a.amount + b.amount);
var sumOther = array
.filter(function(y) { return y.cur != EUR && y.cur != USD })
.reduce(function(a, b) { return a.amount + b.amount });
可以使用数组方法
希望这段代码有用
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)
您可以使用数组方法
希望这段代码有用
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)
您可以使用一个简单的循环,在每次迭代中测试
cur
的值,并将所需的值加到总数中
或者可以使用数组.filter()
和.reduce()
方法:
var数组=[
{金额:1000欧元},
{金额:1500,当前:'GBD'},
{金额:2000美元},
{金额:2500,cur:'SSL'}
]
var total=array.filter(函数(v){return!/EUR | USD/.test(v.cur)})
.reduce(函数(acc,current){return acc+current.amount},0)
log(total)
您可以使用一个简单的循环,在每次迭代中测试cur
的值,并将所需的值添加到总数中
或者可以使用数组.filter()
和.reduce()
方法:
var数组=[
{金额:1000欧元},
{金额:1500,当前:'GBD'},
{金额:2000美元},
{金额:2500,cur:'SSL'}
]
var total=array.filter(函数(v){return!/EUR | USD/.test(v.cur)})
.reduce(函数(acc,current){return acc+current.amount},0)
console.log(总计)
排除的字符串未硬编码的示例:
const数组=[{amount:1000,cur:'EUR'},
{金额:1500,当前:'GBD'},
{金额:2000美元},
{金额:2500,cur:'SSL'}];
const exclude=[‘欧元’、‘美元’];
var sum=array.map(x=>(!exclude.includes(x.cur))?x.amount:false)
.减少((a,b)=>a+b);
控制台日志(总和)代码>排除的字符串未硬编码的示例:
const数组=[{amount:1000,cur:'EUR'},
{金额:1500,当前:'GBD'},
{金额:2000美元},
{金额:2500,cur:'SSL'}];
const exclude=[‘欧元’、‘美元’];
var sum=array.map(x=>(!exclude.includes(x.cur))?x.amount:false)
.减少((a,b)=>a+b);
控制台日志(总和)代码>请注意,这是ES6。很抱歉延迟,但这是不正确的。例如,如果我有三种不同的cur,除了欧元和美元,这个实现不起作用。如果我有三种不同的货币,它会显示NAN;如果我有一种货币,它会显示null。你能检查一下这个小提琴吗?我将GBD
替换为'GBD'
,以便可以对其进行测试。但在我最初的示例中,我使用了GBD
作为变量,而不是字符串,就像您在问题中所做的那样,这可能是问题所在。请注意,这是ES6。很抱歉延迟,但这是不正确的。例如,如果我有三种不同的cur,除了欧元和美元,这个实现不起作用。如果我有三种不同的货币,它会显示NAN;如果我有一种货币,它会显示null。你能检查一下这个小提琴吗?我将GBD
替换为'GBD'
,以便可以对其进行测试。但在我最初的示例中,我使用了GBD
作为变量,而不是字符串,就像您在问题中所做的那样,这可能是问题所在。如果您没有使用.map()
中的返回值,则应该使用.forEach()
,因为您只是在迭代,不映射。@nnnnnn同意您的意见如果您没有使用.map()
中的返回值,您应该使用.forEach()
,因为您只是在迭代,而不是映射。@nnnnnn同意您的意见