Javascript更改数组元素的位置

Ira*_*kli 5 javascript arrays replace nested element

我在javascript中嵌套数组,如下所示:

testArray['element1'] = {par1: "value1", par2: "value2" ... }
testArray['element2'] = {par1: "value1", par2: "value2" ... }
testArray['element3'] = {par1: "value1", par2: "value2" ... }
testArray['element4'] = {par1: "value1", par2: "value2" ... }
Run Code Online (Sandbox Code Playgroud)

那我怎么能改变元素的位置呢?例如,而不是

("element1", "element2", "element3","element4")
to be
("element4", "element2", "element3","element1")
or
("element1", "element4", "element3","element2")
Run Code Online (Sandbox Code Playgroud)

Joh*_*opp 8

首先,正确构建数组:

array = {
  'element1' : {par1: 'value1', par2: 'value2', par3: 'value3'....},
  'element2' : {par1: 'value1', par2: 'value2', par3: 'value3'....},
  'element3' : {par1: 'value1', par2: 'value2', par3: 'value3'....},
  'element4' : {par1: 'value1', par2: 'value2', par3: 'value3'....}
}
Run Code Online (Sandbox Code Playgroud)

然后交换:

var tmp = array['element2'];
array['element2'] = array['element1'];
array['element1'] = tmp;
Run Code Online (Sandbox Code Playgroud)

  • 抱歉,您所描述的不是数组,而是简单的JavaScript对象.所以改变顺序没有任何意义,因为你无法迭代它. (8认同)
  • 是的,唯一有效的答案是那些完全是鸽子洞并且尽可能狭窄的答案.没有其他答案可能有所帮助.我很抱歉. (2认同)

jba*_*bey 7

您在问题中发布的内容不是数组,它甚至不是有效的 javascript 语法。由于您询问顺序,我假设您没有使用对象,因为 javascript 中的对象没有保证的顺序。

话虽如此,我将假设您有一个这样声明的数组:

var testArray = [{ ... }, { ... }, { ... }];
Run Code Online (Sandbox Code Playgroud)

要交换两个元素,您只需要一个通用的交换函数:

var swap = function(theArray, indexA, indexB) {
    var temp = theArray[indexA];
    theArray[indexA] = theArray[indexB];
    theArray[indexB] = temp;
};

swap(testArray, 0, 1);
Run Code Online (Sandbox Code Playgroud)

http://jsfiddle.net/jbabey/gRVn5/