3 回答
TA贡献1856条经验 获得超5个赞
您可以使用 anew Map()来存储键值对,其中b是您的键,a是您的值。在此之后,您可以.map()您的数组b值的数组a值使用你构建的地图:
const jsObjects = [
{a: 1, b: 2},
{a: 3, b: 4},
{a: 5, b: 6},
{a: 7, b: 8}
];
const myArray = [4,6,8];
const search = new Map(jsObjects.map(({a, b}) => [b, a]));
const res = myArray.map(v => search.get(v));
console.log(res);
TA贡献2065条经验 获得超14个赞
你可以试试 Array.prototype.filter()
该
filter()
方法创建一个新数组,其中包含通过提供的函数实现的测试的所有元素。
该
includes()
方法确定数组是否在其条目中包含某个值,并根据需要返回 true 或 false。
该
map()
方法使用对调用数组中的每个元素调用提供的函数的结果创建一个新数组。
var jsObjects = [
{a: 1, b: 2},
{a: 3, b: 4},
{a: 5, b: 6},
{a: 7, b: 8}
];
var myArray = [4,6,8]
var resArray = jsObjects.filter(i => myArray.includes(i.b)).map(i => i.a);
console.log(resArray);
TA贡献1911条经验 获得超7个赞
您可以使用诸如 的高阶函数来完成filter, map, find e.t.c,但正如您所说,您是 javascript 新手 - 我认为这是理解和获得预期结果的最简单方法。
var jsObjects = [
{a: 1, b: 2},
{a: 3, b: 4},
{a: 5, b: 6},
{a: 7, b: 8}
];
var myArray = [4,6,8]
var finalArray = [];
for(let bValue of myArray) {
for(let item in jsObjects) {
if(bValue == jsObjects[item].b) {
finalArray.push(jsObjects[item].a);
}
}
}
console.log(finalArray); // [3, 5, 7]
添加回答
举报