使用一个数组中的值作为键来查找另一个数组中的匹配项

时间:2019-04-23 09:04:46

标签: javascript arrays

我有2个数组,arrayOne,我想用作键来从其他数组中选择值并显示所有已建立的匹配项。

arrayOne:

Key: Value
0: 13
1: 17
2: 18
3: 19
4: 22

arrayTwo

Key: Value
13: value1
17: value2
18: value3
19: value4
22: value5
88: value6
99: value7

应该给我以下输出:

value1, value2, value3, value4, value5

我发现了许多教程,其中有按值比较值或按键比较值的教程,但是如何比较具有匹配键的值呢?

非常感谢!

5 个答案:

答案 0 :(得分:1)

如果您在谈论对象,则可以对mapObject.values使用动态属性表示法,如下所示:

const array1 = {
  0: 13,
  1: 17,
  2: 18,
  3: 19,
  4: 22
};
const array2 = {
  13: "value1",
  17: "value2",
  18: "value3",
  19: "value4",
  22: "value5",
  88: "value6",
  99: "value7"
};
const result = Object.values(array1).map(v => array2[v]);
console.log(result);

但是,如果实际上有数组,则可以省略Object.values并在map上使用array1

const array1 = [13, 17, 18, 19, 22];
let array2 = [];
array2[13] = "value1";
array2[17] = "value2";
array2[18] = "value3";
array2[19] = "value4";
array2[22] = "value5";
array2[88] = "value6";
array2[99] = "value7";
const result = array1.map(v => array2[v]);
console.log(result);

答案 1 :(得分:1)

通过具有两个数组,您可以将第一个数组索引与第二个数组的值映射。

var one = [13, 17, 18, 19, 22],
    two = Object.assign([], { 13: 'value1', 17: 'value2', 18: 'value3', 19: 'value4', 22: 'value5', 88: 'value6', 99: 'value7' }),
    result = one.map(i => two[i]);

console.log(result);
console.log(one);
console.log(two);

答案 2 :(得分:1)

只需对其进行迭代。在大多数情况下都足够简单快捷。

arrayOne=[13, 17, 18, 19, 22]
arrayTwo=[]
arrayTwo[13]="value1"
arrayTwo[17]="value2"
arrayTwo[18]="value3"
arrayTwo[19]="value4"
arrayTwo[22]="value5"
arrayTwo[88]="value6"
arrayTwo[99]="value7"

arrayOne.forEach((elem, index)=>{
  console.log(arrayTwo[elem])
})

答案 3 :(得分:0)

获取结果的一种愚蠢但非常紧凑的方法是

const matches = arr2.map(o1 => (arr1.find(o2 => o2.value === o1.key))).filter(obj => !!obj)

您将这些值映射到新数组中,并过滤出所有undefined个值。

答案 4 :(得分:-1)

var result = []
arrayOne.forEach(function(val){
  arrayTwo[val] && result.push(arrayTwo[val])
})