JavaScript:Rozdělte pole na jednotlivé proměnné

S ohledem na tuto datovou strukturu:

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

Procházení jednotlivých vozidel existuje způsob, jak změnit přiřazení prvků pole k jednotlivým proměnným najednou, něco jako:

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

… Snažím se vyhnout tomu, abych dělal:

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

Jen jsem zvědavý, protože tento typ věcí je k dispozici v jiných programovacích jazycích. Díky!

Odpověď

Nyní je to možné pomocí ES6 Array Destructuring.

Jako z Dokumentů:

Syntaxe destrukčního přiřazení je výraz JavaScriptu, který umožňuje rozbalit hodnoty z polí nebo vlastnosti z objektů do odlišných proměnných.

Zvažte následující příklad:

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

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

Stejně jako u vašich dat .forEach() metodu lze také použít pro iteraci přes prvky pole spolu s Array Destructuring:

let vehicles = [
  [ "2011","Honda","Accord" ],
  [ "2010","Honda","Accord" ]
];

vehicles.forEach(([year, make, model], index) => {
  // ... your code here ...
  console.log(`${year}, ${make}, ${model}, ${index}`);
});

Odkazy:

  • Array Destructuring
  • Array.prototype.forEach()
  • Arrow Functions
  • Template Literals