我有以下数组
var A = ['C', 'D', 'E', 'F', 'G'];
var B = [3, 0, 4, 1, 2];
我需要使用数组B中给定的索引值重新排列数组A.我的问题解决方法是
function reArrange(A,B){
var num;
var letter;
for(var i = 0; i < A.length; i++){
num = B[i];
letter = A[i];
A[num] = letter;
}
return A;
}
reArrange(A, B);
['D', 'C', 'E', 'C', 'E']
<{1}}的输出应为['D', 'F', 'G', 'C', 'E']
答案 0 :(得分:1)
希望这会有所帮助。
var A = ['C', 'D', 'E', 'F', 'G'];
var B = [3, 0, 4, 1, 2];
var C = []
function reArrange(A,B){
var num;
var letter;
for(var i = 0; i < A.length; i++){
num = B[i];
letter = A[i];
C[num] = letter;
}
return C;
}
reArrange(A, B);
console.log(C)
答案 1 :(得分:1)
您可以使用第二个数组作为索引,以确定给定数组的实际值。
var array = ['C', 'D', 'E', 'F', 'G'],
order = [3, 0, 4, 1, 2],
result = order.reduce((r, a, i) => (r[a] = array[i], r), []);
console.log(result); // ['D', 'F', 'G', 'C', 'E']
&#13;
答案 2 :(得分:0)
简单
var A = ['C', 'D', 'E', 'F', 'G'];
var B = [3, 0, 4, 1, 2];
function reorderAB(first, second){
var result= new Array();
for(var i=0;i<second.length;i++){
result[second[i]]=first[i];
}
console.log(result);
}
reorderAB(A,B);
&#13;
答案 3 :(得分:0)
问题是你用新值替换了数组A.
循环中第一个i的示例。 i = 0,num = 3,字母= C. 原来的A [3] = F. 然后你指定A [num] =字母,表示A [3](F)有新值/替换C等等。
答案 4 :(得分:0)
您可以从Map
创建B -> A
,然后相应地订购密钥以输出您期望的数组,但我不确定您使用它的用例。
const A = ['C', 'D', 'E', 'F', 'G'];
const B = [3, 0, 4, 1, 2];
let bToA = new Map();
B.forEach((a, i) => bToA.set(a, A[i]))
const final = [...bToA.keys()].sort().map(x => bToA.get(x))
console.log(final);
&#13;