【问题标题】:Rearranging Elements For Array of Array重新排列数组数组的元素
【发布时间】:2015-04-29 03:26:05
【问题描述】:

我正在尝试重新排列数组数组中的元素,但没有成功。任何人都可以提供建议吗?这是我尝试过的两个选项。我想交换/切换第一个和第二个元素的位置。

arr1 是一个数组数组(即 arr[][]),所以我创建了 arr2 作为更新后的 arr1

var arr2 = [];

for (var n = 0; n <arr1.length; n++){
  arr2[n][0] = arr1[n][1];
  arr2[n][1] = arr1[n][0];

}

我尝试的另一件事是:

function order(arr[]){
  return [arr[n][1],arr[n][0], arr[n][2], arr[n][3]];
}

var arr2 = order(arr1);

【问题讨论】:

    标签: javascript arrays


    【解决方案1】:

    您还需要为每个项目创建一个新数组:

    var arr2 = [];
    for(var n = 0; n < arr1.length; n++) {
      arr2[n] = [arr1[n][1], arr1[n][0]];
    }
    

    【讨论】:

    • 如果 arr1[n] 有两个以上的元素,这是否有效?即有一个 arr1[n][2] 和 arr1[n][3]
    • @djfkdjfkd39939 这种方法可行,但您必须稍微修改一下代码。此代码适用于固定大小为 2 的数组。
    • 如何用两个以上的元素来修改它?只是列出所有元素?
    • @djfkdjfkd39939 取决于你想要什么顺序,以及你需要多少元素。
    【解决方案2】:

    很简单:

    var a = arr1[n][0];
    arr2[n][0] = arr1[n][1];
    arr2[n][1] = a;
    

    您需要将第一个值保存为变量,因为如果您按照您的做法执行 (arr2[n][0] = arr1[n][1];),您的两个数组索引将具有相同的值。

    你做到了:

    a = 1, b = 2;
    a = b;
    b = a;
    

    在 a = 2, b = 2 中解析

    另外,您现在的代码不起作用。您需要创建一个新数组,用于在 javascript 中模拟多维数组。

    for(i = 0; i < (yourdesiredamountofarrays); i++)
    {
        yourarray[i] = new Array();
    }
    

    【讨论】:

    • 不需要使用临时变量,arr1 没有被覆盖
    • 对不起,我想你搞错了。如果他将 arr[1] 分配给 arr[0],然后将 arr[0] 分配给 arr[1],那么 arr[1] 将与 arr[0] 相同。
    【解决方案3】:

    第一个例子你需要为开关使用一个临时变量:

    var arr2 = [];
    
    for (var n = 0; n <arr1.length; n++){
      var tempVal = arr1[n][1];
      arr2[n][1] = arr1[n][0];
      arr2[n][0] = tempArr;
    }
    

    第二个例子,在 JS 中,变量旁边不应该有括号,因为它只是一个松散类型的变量名。

    function order(arr){
      return [arr[n][1],arr[n][0], arr[n][2], arr[n][3], arr[n][4]];
    }
    
    var arr2 = order(arr1);
    

    下次,在询问之前,您应该检查控制台。 stackoverflow wiki page on JS 有很多很好的学习调试 JS 的资源。

    【讨论】:

    • 不需要使用临时变量,不会覆盖 arr1
    • 这就是其他所有答案的作用。如果您有更好的方法,您可能应该分享。
    • James,他说“arr1 未被覆盖”。可能还有其他解决方案,但这种说法是错误的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-08-01
    • 2012-09-17
    • 2016-07-26
    • 1970-01-01
    • 2021-04-26
    • 2013-01-27
    相关资源
    最近更新 更多