使用数组中的值查找对象中的键
Finding a key in an object by using values from an array
我有一个数组,它是通过从列表中选择项目动态创建的:
[2, 4]
我还有一个对象数组:
[{id: 1, name: "Param1"}, {id: 2, name: "Param2"}, {id: 3, name: "Param3"}, {id: 4, name: "Param4"}]
我需要做的是使用第一个数组中的值来匹配第二个数组中对象的 ID 和 return 这些对象。
对此提供帮助将不胜感激
感谢您的宝贵时间
您可以使用此 ES6 代码,它将第一个数组转换为 Set to allow fast lookup, and then applies the Array filter
方法,专门用于此目的:
var select = [2, 4];
var data = [{id: 1, name: "Param1"}, {id: 2, name: "Param2"},
{id: 3, name: "Param3"}, {id: 4, name: "Param4"}]
var selectSet = new Set(select);
var result = data.filter( obj => selectSet.has(obj.id) );
console.log(result);
您可以只使用 for
循环作为 Liam 的评论,或者您可以像这样使用 array
的 filter
方法:
var keys = [2, 4];
var objs = [{id: 1, name: "Param1"}, {id: 2, name: "Param2"}, {id: 3, name: "Param3"}, {id: 4, name: "Param4"}];
function filterById(obj) {
return keys.indexOf(obj.id) != -1;
}
var newArr = objs.filter(filterById);
newArr
就是你想要的结果。
我有一个数组,它是通过从列表中选择项目动态创建的:
[2, 4]
我还有一个对象数组:
[{id: 1, name: "Param1"}, {id: 2, name: "Param2"}, {id: 3, name: "Param3"}, {id: 4, name: "Param4"}]
我需要做的是使用第一个数组中的值来匹配第二个数组中对象的 ID 和 return 这些对象。
对此提供帮助将不胜感激
感谢您的宝贵时间
您可以使用此 ES6 代码,它将第一个数组转换为 Set to allow fast lookup, and then applies the Array filter
方法,专门用于此目的:
var select = [2, 4];
var data = [{id: 1, name: "Param1"}, {id: 2, name: "Param2"},
{id: 3, name: "Param3"}, {id: 4, name: "Param4"}]
var selectSet = new Set(select);
var result = data.filter( obj => selectSet.has(obj.id) );
console.log(result);
您可以只使用 for
循环作为 Liam 的评论,或者您可以像这样使用 array
的 filter
方法:
var keys = [2, 4];
var objs = [{id: 1, name: "Param1"}, {id: 2, name: "Param2"}, {id: 3, name: "Param3"}, {id: 4, name: "Param4"}];
function filterById(obj) {
return keys.indexOf(obj.id) != -1;
}
var newArr = objs.filter(filterById);
newArr
就是你想要的结果。