我有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
我发现了许多教程,其中有按值比较值或按键比较值的教程,但是如何比较具有匹配键的值呢?
非常感谢!
答案 0 :(得分:1)
如果您在谈论对象,则可以对map
和Object.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])
})