我有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/
谢谢!
答案 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);