JavaScript:将数组拆分为单个变量

时间:2011-01-12 16:40:37

标签: javascript arrays variables split

考虑这个数据结构:

var vehicles = [
  [ "2011","Honda","Accord" ],
  [ "2010","Honda","Accord" ],
  .....
];

循环遍历每个 vehicle 项目,有没有办法将数组元素一次性重新分配给各个变量,如:

for (i = 0; i < vehicles.length; i++) {
  var(year,make,model) = vehicles[i]; // doesn't work
  .....
}

......我正试图逃避:

for (i = 0; i < vehicles.length; i++) {
  var year = vehicles[i][0];
  var make = vehicles[i][1];
  var model = vehicles[i][2];
  .....
}

很好奇,因为这种类型的东西在其他编程语言中可用。谢谢!

4 个答案:

答案 0 :(得分:4)

不幸的是,目前没有一种方法可以做到这一点XBrowser。 (我知道)。

相对较快,可以跨浏览器,请参阅链接:

https://developer.mozilla.org/en/New_in_JavaScript_1.7

(在PHP中有“list”,它会完全按照你的意愿行事,没有类似的XBrowser for javascript)

当然相对较快可能意味着什么等等。(感谢Felix指出我的错误)

答案 1 :(得分:1)

您目前在javascript中获得的最接近的可能是消除冗余var并使用逗号分隔符分隔语句。

for (i = 0; i < vehicles.length; i++) {
  var year = vehicles[i][0], make = vehicles[i][1], model = vehicles[i][2];
  .....
}

或者你可以将它缩短一点:

for (i = 0; i < vehicles.length; i++) {
  var v = vehicles[i], year = v[0], make = v[1], model = v[2];
  .....
}

答案 2 :(得分:1)

我能想到的最接近的选择是使用一个函数并使用apply()来调用它。传递一个数组,它将作为每个参数传递。

function vehicle(year, make, model) {
    // do stuff
}

for (i = 0; i < vehicles.length; i++) {
    vehicle.apply (this, vehicles[i]);
}

或匿名函数:

for (i = 0; i < vehicles.length; i++) {
    (function(year, make, model) {
        // do stuff
    }).apply(this, vehicles[i]);
}

答案 3 :(得分:0)

现在可以使用ES6的阵列解构了。

根据文档:

  

解构赋值语法是一个JavaScript表达式,可以将数组中的值或对象中的属性解压缩为不同的变量。

考虑以下示例:

chart()

与数据一样,var chartobject = chart().width(100).height(100)d3.select("#id1").data(data).call(chartobject); var chartobject2 = chart().width(200).height(200)d3.select("#id2").data(data).call(chartobject2); 方法也可用于遍历数组元素以及数组解构:

let [a, b, c] = [10, 20, 30];

console.log(a);  // output => 10
console.log(b);  // output => 20
console.log(c);  // output => 30

参考: