为了账号安全,请及时绑定邮箱和手机立即绑定

将数组与对象数组匹配并获取值

将数组与对象数组匹配并获取值

潇湘沐 2021-11-25 19:46:01
我是 JS 新手。我有一个如下所述的对象数组,我有一个包含值的数组。我是否可以描述预期的输出?var jsObjects = [   {a: 1, b: 2},    {a: 3, b: 4},    {a: 5, b: 6},    {a: 7, b: 8}];var myArray = [4,6,8]Output: [3,5,7]
查看完整描述

3 回答

?
RISEBY

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);


查看完整回答
反对 回复 2021-11-25
?
翻翻过去那场雪

TA贡献2065条经验 获得超14个赞

你可以试试 Array.prototype.filter()

filter()方法创建一个新数组,其中包含通过提供的函数实现的测试的所有元素。

Array.prototype.includes()

includes()方法确定数组是否在其条目中包含某个值,并根据需要返回 true 或 false。

和 Array.prototype.map()

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);


查看完整回答
反对 回复 2021-11-25
?
Smart猫小萌

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]


查看完整回答
反对 回复 2021-11-25
  • 3 回答
  • 0 关注
  • 563 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信