2

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

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

是否可以在不使用temp[]额外数组的情况下实现相同的效果?

4

1 回答 1

1

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

jQuerymap将允许您这样做,尽管很有可能在内部使用临时变量。该项目的好处是它将继续改进,即使该功能目前效率低下,以后也可能会更有效,而不必以不同的方式调用它。

如果您不反对使用 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为新的数组对象。这实际上取决于您要完成的工作。我认为您无法完全避免临时变量,但根据您是为了简单、速度效率、内存效率还是其他原因,有不同的解决方案。

于 2013-02-02T22:44:33.837 回答