重新排序数组中的对象

时间:2018-01-12 07:08:07

标签: javascript

我有以下数组

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']

5 个答案:

答案 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)

您可以使用第二个数组作为索引,以确定给定数组的实际值。

&#13;
&#13;
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;
&#13;
&#13;

答案 2 :(得分:0)

简单

&#13;
&#13;
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;
&#13;
&#13;

答案 3 :(得分:0)

问题是你用新值替换了数组A.

循环中第一个i的示例。 i = 0,num = 3,字母= C. 原来的A [3] = F. 然后你指定A [num] =字母,表示A [3](F)有新值/替换C等等。

答案 4 :(得分:0)

您可以从Map创建B -> A,然后相应地订购密钥以输出您期望的数组,但我不确定您使用它的用例。

&#13;
&#13;
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;
&#13;
&#13;

相关问题