使用数组中的值查找对象中的键

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 的评论,或者您可以像这样使用 arrayfilter 方法:

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就是你想要的结果。