比较具有不同数量属性的两个数组,并使用javascript在条件下将第三个数组与比较值映射 [英] compare two arrays having different number of properties and mapping a third array with compared values on condition using javascript

查看:76
本文介绍了比较具有不同数量属性的两个数组,并使用javascript在条件下将第三个数组与比较值映射的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有2个数组

var array1 = ["1", "2", "3", "4", "5", "6"]

var array2 = [
  { offId: "4", offname: "four" },
  { offId: "9", offname: "nine" },
  { offId: "15", offname: "fifteen" },
  { offid: "3", offname: "three" },
  { offId: "1", offname: "one" },
  { offId: "0", offname: "zero" },
  { offId: "8", offname: "eight" },
  { offId: "10", offname: "ten" },
]

我需要比较两个值为offId和结果数组的数组应为

i need to compare two arrays with the values of offId and the resulted array should be

var array3 = [
  { offId: "1", offname: "one" },
  { offId: "2", offname: "" },
  { offId: "3", offname: "three" },
  { offId: "4", offname: "four" },
  { offId: "5", offname: "" },
  { offId: "6", offname: "" },
]

我怎样才能实现这个目标(阵列长度可能相同或不同)租金)

How could i achieve this(length of the array may be same or different)

推荐答案

你可以拿一个 Map 并使用存储的对象或新对象。

You could take a Map and use either the stored object or a new object.

var array1 = ["1", "2", "3", "4", "5", "6"],
    array2 = [{ offId: "4", offname: "four" }, { offId: "9", offname: "nine" }, { offId: "15", offname: "fifteen" }, { offId: "3", offname: "three" }, { offId: "1", offname: "one" }, { offId: "0", offname: "zero" }, { offId: "8", offname: "eight" }, { offId: "10", offname: "ten" }],
    map = array2.reduce((m, o) => m.set(o.offId, o), new Map),
    result = array1.map(offId => map.get(offId) || { offId, offname: '' });

console.log(result);

.as-console-wrapper { max-height: 100% !important; top: 0; }

这篇关于比较具有不同数量属性的两个数组,并使用javascript在条件下将第三个数组与比较值映射的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆