给定一个对象数组:
people = [
{id: "1", name: "abc", gender: "m", age:"15", country:"USA" },
{id: "2", name: "def", gender: "m", age:"25", country:"BRA" },
{id: "3", name: "ghi", gender: "f", age:"05", country:"CHI" },
{id: "4", name: "jkl", gender: "m", age:"35", country:"RUS" },
{id: "5", name: "mno", gender: "m", age:"41", country:"JAP" },
{id: "6", name: "pqr", gender: "f", age:"30", country:"COL" },
{id: "7", name: "stu", gender: "f", age:"31", country:"CAN" },
{id: "8", name: "vwx", gender: "m", age:"78", country:"USA" },
]
以及一组想要的键:
wantedKeys = ["name", "age", "country"]
预期输出:
peopleFiltered = [
{name: "abc", age:"15", country:"USA" },
{name: "def", age:"25", country:"BRA" },
{name: "ghi", age:"05", country:"CHI" },
{name: "jkl", age:"35", country:"RUS" },
{name: "mno", age:"41", country:"JAP" },
{name: "pqr", age:"30", country:"COL" },
{name: "stu", age:"31", country:"CAN" },
{name: "vwx", age:"78", country:"USA" },
]
如何过滤people
array 返回一个新的对象数组,仅包含 wantedKeys
中包含的项目数组?
最佳答案
解决方案
使用reduce
可能还有更短的方法,但这应该是一个有效的起点。
var peopleFiltered = people.map(person => {
var obj = {};
wantedKeys.forEach((key) => obj[key] = person[key]);
return obj;
});
工作演示
people = [{
id: "1",
name: "abc",
gender: "m",
age: "15",
country: "USA"
},
{
id: "2",
name: "def",
gender: "m",
age: "25",
country: "BRA"
},
{
id: "3",
name: "ghi",
gender: "f",
age: "05",
country: "CHI"
},
{
id: "4",
name: "jkl",
gender: "m",
age: "35",
country: "RUS"
},
{
id: "5",
name: "mno",
gender: "m",
age: "41",
country: "JAP"
},
{
id: "6",
name: "pqr",
gender: "f",
age: "30",
country: "COL"
},
{
id: "7",
name: "stu",
gender: "f",
age: "31",
country: "CAN"
},
{
id: "8",
name: "vwx",
gender: "m",
age: "78",
country: "USA"
},
]
wantedKeys = ["name", "age", "country"]
var peopleFiltered = people.map(person => {
var obj = {};
wantedKeys.forEach((key) => obj[key] = person[key]);
return obj;
});
console.log(peopleFiltered);
关于javascript - 如何使用字符串数组来过滤对象数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69944869/