基于另一个排列1个数组

时间:2013-02-02 22:17:53

标签: javascript arrays sorting

尝试根据另一个数组的顺序排列数组

function Sort(old, new){
  var temp = [];
   for(var i=0; i<old.length; i++){
        temp[i] = old[new[i]];
   }
  return temp;
}

是否可以在不使用temp[]附加阵列的情况下实现相同的目标?

1 个答案:

答案 0 :(得分:1)

首先,我想指出new是一个关键字,应该作为变量名称来避免。

jQuery的map会让你这样做,虽然很有可能在内部使用临时变量。关于该项目的好处是它将继续改进,即使该功能目前效率低下,以后可能会更高效,而不必以不同的方式调用它。

如果你不反对使用jQuery,那么这是一个单行:

var oldArray = ['a', 'b', 'c', 'd'],
    newOrder = [1, 3, 0, 2];

oldArray = jQuery.map(newOrder, function(val) { return oldArray[val]; });

应将oldArray重新排序为['b', 'd', 'a', 'c']。但是,您仍然使用新的数组对象替换oldArray。这真的取决于你想要完成的事情。我认为你不能完全避免临时变量,但是根据你是为了简单,速度效率,内存效率还是别的东西,有不同的解决方案。