นี่เป็นปัญหาง่ายๆและฉันเคยทำมาก่อน ฉันจำไม่ได้ว่าอะไรหรือมันถูกเรียกว่าอะไร
ในหลามฉันสามารถทำสิ่งนี้:
arr = ['one', 'two']
one, two = arr
ฉันจะทำสิ่งนั้นใน JavaScript ได้อย่างไร
นี่เป็นปัญหาง่ายๆและฉันเคยทำมาก่อน ฉันจำไม่ได้ว่าอะไรหรือมันถูกเรียกว่าอะไร
ในหลามฉันสามารถทำสิ่งนี้:
arr = ['one', 'two']
one, two = arr
ฉันจะทำสิ่งนั้นใน JavaScript ได้อย่างไร
คำตอบ:
ปัจจุบันนี้เป็นโซลูชันข้ามเบราว์เซอร์ที่เข้ากันได้กับ AFAIK เท่านั้น:
var one = arr[0],
two = arr[1];
ES6 จะอนุญาตให้ทำการทำลาย:
let [x, y] = ['foo', 'bar'];
console.log(x); // 'foo'
console.log(y); // 'bar'
หรือทำตามตัวอย่างเริ่มต้นของคุณ:
var arr = ['one', 'two'];
var [one, two] = arr;
คุณสามารถสร้างค่าเริ่มต้น:
const [one = 'one', two = 'two', three = 'three'] = [1, 2];
console.log(one); // 1
console.log(two); // 2
console.log(three); // 'three'
ว่าdestructuring ที่ได้รับมอบหมาย คุณสามารถทำได้ในบางเบราว์เซอร์ด้วยไวยากรณ์ต่อไปนี้:
[one, two] = arr;
มันได้รับการสนับสนุนในบางส่วนของเบราว์เซอร์ใหม่ล่าสุดและ transpilers เช่นบาเบลและTraceur นี่เป็นคุณลักษณะที่นำมาใช้กับ ECMAScript 4 ซึ่งต่อมากลายเป็น ECMAScript Harmony ซึ่งในที่สุดก็กลายเป็น ES 2015
คำถามคือค่อนข้างเก่า แต่ผมชอบที่จะโพสต์ทางเลือกนี้ (2016) วิธีการ: หนึ่งยังสามารถใช้การแพร่กระจายผู้ประกอบการ "..."
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Spread_operator
let xAndY = [42, 1337];
let f = function(x, y) { return x + y; };
f(...xAndY);
คุณสามารถใช้ฟังก์ชั่นการใช้งานของอาเรย์ถ้าคุณต้องการที่จะผ่านรายการอาร์เรย์เป็นฟังก์ชั่นการโต้แย้ง
การดำเนินการตามความคิดที่จริงจัง
http://jsfiddle.net/RichAyotte/6D2wP/
(function(a, b, c, d) {
console.log(a, b, c, d);
}.apply(this, ['a', 'b', 'c', 'd']));
var one = arr[0];
var two = arr[1];
var
เพื่อป้องกันตัวแปรจากการสร้างมลภาวะระดับโลก
var
s ทั้งหมดสำหรับแต่ละขอบเขตในครั้งเดียวแทนที่จะมีvar
การประกาศสองครั้งแยกกัน
CoffeeScript มีอยู่: http://jashkenas.github.com/coffee-script/#pattern_matching
และอ้างจากด้านบนของหน้า:
"CoffeeScript เป็นภาษาเล็ก ๆ ที่รวบรวมเป็นจาวาสคริปต์คิดว่ามันเป็นน้องชายผู้น้อยกว่าของจาวาสคริปต์ - ยีนตัวเดียวกันความสูงเท่ากัน แต่มีสไตล์ที่แตกต่างนอกเหนือจากโบนัสสารพัดงบใน CoffeeScript สอดคล้องกับ - ต่อหนึ่งซึ่งเทียบเท่ากับ JavaScript มันเป็นอีกวิธีหนึ่งในการกล่าว