我有一个像下面这样的对象数组
var item = [
{ "name": "John", "age": 30, "city": "New York1" },
{ "name": "John1", "age": 31, "city": "New York2" },
{ "name": "John2", "age": 32, "city": "New York3" },
{ "name": "John3", "age": 31, "city": "New York3" }
]
我想要的是从这个具有年龄属性值的对象数组中获取一些年龄
在 [30,31]
所以基本上输入将是一个整数数组,如 var ageArray=[30,31];
示例:
输入:[30,31]
输出:以下对象的 age
的总和
{ "name":"John", "age":30, "city":"New York1"},
{ "name":"John1", "age":31, "city":"New York2"},
{ "name":"John3", "age":31, "city":"New York3"}
所以这里是
92
我已经尝试为此使用过滤器,但不确定如何将 filter
与 contains 一起使用
我试过的是
var result = item .filter(obj => {
return obj.age..includes(ages);
})
有人可以帮我解决这个问题吗?
最佳答案
const items = [
{ "name":"John", "age":30, "city":"New York1"},
{ "name":"John1", "age":31, "city":"New York2"},
{ "name":"John2", "age":32, "city":"New York3"},
{ "name":"John3", "age":31, "city":"New York3"}]
const ages = [30, 31];
const res = items.reduce((sum, {age})=>{
return sum + (ages.includes(age) ? age : 0);
}, 0);
console.log(res);
修改名称:
const items = [
{ "name":"John", "age":30, "city":"New York1"},
{ "name":"John1", "age":31, "city":"New York2"},
{ "name":"John2", "age":32, "city":"New York3"},
{ "name":"John3", "age":31, "city":"New York3"}]
const names = ["John", "john1"].map(n=>n.toLowerCase());
const res = items.reduce((sum, {name, age})=>{
return sum + (names.includes(name.toLowerCase()) ? age : 0);
}, 0);
console.log(res);
关于javascript - 如何根据输入值数组返回对象数组的匹配结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53987932/