remove 的JavaScript。 將數組值分配給多個變量?




javascript array remove (2)

這個問題在這裡已有答案:

var a,b,c;
var arr = [1,2,3];
[a,b,c] = arr;

這段代碼在Firefox中完美運行,結果是a = 1,b = 2和c = 3,
但它在Chrome中不起作用。 是Chrome還是
它不是有效的JavaScript代碼? (我在javascript引用中找不到它)

如何修改此代碼以使其適用於Chrome,對其造成的損害最小?
(我真的不想寫一個= arr [0]; b = arr [1] ...或者一直使用arr.shift()

PS這只是一個示例代碼,在實際代碼中
我從代碼之外的某個地方獲取了arr數組


這是JavaScript 1.7的一個新功能,稱為Destructuring assignment

解構賦值使得可以使用反映數組和對象文字構造的語法從數組或對像中提取數據。

對象和數組文字表達式提供了一種創建ad-hoc數據包的簡便方法。 一旦創建了這些數據包,就可以按照自己的方式使用它們。 你甚至可以從函數中返回它們。

使用解構賦值可以做的一件特別有用的事情是在單個語句中讀取整個結構,儘管可以使用它們執行許多有趣的操作,如下面的示例部分所示。

例如,您可以使用解構賦值來交換值:

var a = 1;
var b = 3;
[a, b] = [b, a];

此功能類似於Perl和Python等語言中的功能。

不幸的是,根據此版本表 ,JavaScript 1.7尚未在Chrome中實現。 但它應該在:

  • FireFox 2.0+
  • IE 9
  • 歌劇院11.50。

在這個jsfiddle中試試吧: http://jsfiddle.net/uBReg/http://jsfiddle.net/uBReg/

我在Chrome(失敗),IE 8(失敗)和FireFox 5(按照wiki表工作)中測試了這個。


只有Javascript 1.7才有可能由@Justin回答。 以下是在廣泛使用的瀏覽器中進行模擬的試用版:

function assign(arr, vars) {
    var x = {};
    var num = Math.min(arr.length, vars.length);
    for (var i = 0; i < num; ++i) {
        x[vars[i]] = arr[i];
    }
    return x;
}
var arr = [1, 2, 3];
var x = assign(arr, ['a', 'b', 'c']);
var z = x.a + x.b + x.c;  // z == 6

我不知道它有多有用。







variable-assignment