如何在javascript中更改数组格式

时间:2016-06-16 08:09:47

标签: javascript jquery arrays

我有一个像这样的数组

[
  [
    "text1",
    "text2",
    "text3",
    "text4",
    "text5"
  ],
  [
    "Rtext1",
    "Rtext2",
    "Rtext3",
    "Rtext4",
    "Rtext5"
  ],
  [
    "1",
    "2",
    "3",
    "4",
    "5"
  ]
]

我需要使用JavaScript将其转换为以下格式

[
  [
    "text1",
    "Rtext1",
    "1"
  ],
  [
    "text2",
    "Rtext2",
    "2"
  ],
  [
    "text3",
    "Rtext3",
    "3"
  ],
  [
    "text4",
    "Rtext4",
    "4"
  ],
  [
    "text5",
    "Rtext5",
    "5"
  ]
]

使用JavaScript或jQuery实现此目的的最佳方法是什么?

我使用了多个for循环来遍历数组但却无法解决它。

3 个答案:

答案 0 :(得分:1)

使用 Array#forEach 方法

var data = [
  [
    "text1",
    "text2",
    "text3",
    "text4",
    "text5"
  ],
  [
    "Rtext1",
    "Rtext2",
    "Rtext3",
    "Rtext4",
    "Rtext5"
  ],
  [
    "1",
    "2",
    "3",
    "4",
    "5"
  ]
];

var res = [];

data.forEach(function(ele) {
  ele.forEach(function(v, i) {
    res[i] = res[i] || []; // define inner array if not defined
    res[i].push(v); // push value to array
  })
});

console.log(res);

答案 1 :(得分:1)

这是你如何做的..

var x = [
  [
    "text1",
    "text2",
    "text3",
    "text4",
    "text5"
  ],
  [
    "Rtext1",
    "Rtext2",
    "Rtext3",
    "Rtext4",
    "Rtext5"
  ],
  [
    "1",
    "2",
    "3",
    "4",
    "5"
  ]
];

var a = x[0];
var b = x[1];
var c = x[2];

var finalAra = [];
for(var i=0;i<a.length;i++){
  var temp = [];
  temp.push(a[i]);temp.push(b[i]);temp.push(c[i]);
  finalAra.push(temp);
  }


console.log(finalAra);

答案 2 :(得分:0)

听起来你正在做阵列压缩。这在函数式编程中非常常见,如果你已经使用了库或者不需要重新实现这些功能,那么在Underscore.js中甚至可以为你做这样的内置。

_.zip(['moe', 'larry', 'curly'], [30, 40, 50], [true, false, false]);
// => [["moe", 30, true], ["larry", 40, false], ["curly", 50, false]]