7

次のように、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" ... }

どうすれば要素の場所を変更できますか?たとえば、代わりに

("element1", "element2", "element3","element4")
to be
("element4", "element2", "element3","element1")
or
("element1", "element4", "element3","element2")
4

6 に答える 6

7

質問に投稿したものは配列ではなく、有効な JavaScript 構文でもありません。順序についてお尋ねしますので、javascript のオブジェクトには順序が保証されていないため、オブジェクトを使用していないと仮定します。

そうは言っても、次のように宣言された配列があると仮定します。

var testArray = [{ ... }, { ... }, { ... }];

2 つの要素を交換するには、汎用の swap 関数が必要です。

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

swap(testArray, 0, 1);

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

于 2012-09-10T19:58:23.317 に答える
7

まず、オブジェクトを適切に構築します。

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'....}
}

次にスワップします:

var tmp = array['element2'];
array['element2'] = array['element1'];
array['element1'] = tmp;
于 2012-09-10T19:38:14.107 に答える
2

次のように配列プロトタイプとして追加できます。

Array.prototype.swap = function (index1, index2) {
    if (index1 <= this.length && index2 <= this.length) {
        var temp = this[index2];
        this[index2] = this[index1];
        this[index1] = temp;
    }
};
于 2014-08-15T15:56:17.883 に答える
1
arr = [0,1,2,3];
a = arr[3];
arr[3] = arr[0];
arr[0] = a;
于 2013-11-09T02:09:50.043 に答える
0

スワップ関数を書くだけです。

var letters = "abcdefghijklmnopqrstuvwxyz".split("");

function swap(theArray, index1, index2) {
  var temp = theArray[index2];
  theArray[index2] = theArray[index1];
  theArray[index1] = temp;
}

swap(letters, 2, 25); // swap "c" and "z"
于 2012-09-10T20:05:35.290 に答える