如何比较2个数组,从数组中的匹配项中返回键,以重写第一个数组中的键

时间:2019-04-18 12:48:25

标签: javascript arrays

我有2个数组:

const firstArray = ["A", "B", "1", "2", "F", "89", "8", "K"];
const inputArray = ["1", "B", "F", "A", "89"];

还有

for (const index of firstArray.keys()) {
  console.log(index);
}

我从数组中获取了密钥:0、1、2、3、4、5、6、7、8

还有

for (const index of inputArray .keys()) {
  console.log(index);
}

我从输入数组中获取键:0、1、2、3、4

我用它来比较并检查所有元素是否都在firstArray中

const foundedArray = inputArray.filter(element => firstArray.includes(element));

到这里一切都很好,但是现在我需要将firstArray的键放入我的inputArray中,以使其适合firstArray的相同匹配值。

我需要将firstArray的键输入到我的输入数组中:

Value ["1", "B", "F", "A", "89"];
Keys    2,   1,   4,   0,   5

我被困在这里怎么写。

游乐场:https://jsfiddle.net/alaber/u792gdfa/

谢谢!

2 个答案:

答案 0 :(得分:4)

<p>
this is the                  test
<br>
               this is the test
<br>
this              is the                  test
<p>

使用 inputArray.map(it => firstArray.indexOf(it)) 可以在数组中获取某个值的位置。

答案 1 :(得分:2)

要获得重新排序的数组,您可以计算inputArray的值并通过检查剩余计数并减少计数来过滤firstArray

const
    firstArray = ["A", "B", "1", "2", "F", "89", "8", "K"],
    inputArray = ["1", "B", "F", "A", "89"],
    count = inputArray.reduce((count, value) => {
        count[value] = (count[value] || 0) + 1;
        return count;
    }, {}),
    result = firstArray.filter(value => count[value] && count[value]--);

console.log(result);