这是一个简单的问题,我以前做过。我只是不记得怎么做了,或者确切地说它叫什么。
在Python中,我可以这样做:
arr = ['one', 'two']
one, two = arr
我该如何用JavaScript实现这个功能?
这是一个简单的问题,我以前做过。我只是不记得怎么做了,或者确切地说它叫什么。
在Python中,我可以这样做:
arr = ['one', 'two']
one, two = arr
我该如何用JavaScript实现这个功能?
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'
这个问题很老了,但我想发布这个替代方案(2016年):可以使用“spread”运算符“...”。
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);
Array
是否有 .apply()
函数。我认为你的意思是 some_function.apply(this, my_array)
。请参考这个答案。 - Kit实现serious的想法。
http://jsfiddle.net/RichAyotte/6D2wP/
(function(a, b, c, d) {
console.log(a, b, c, d);
}.apply(this, ['a', 'b', 'c', 'd']));
解构赋值是JavaScript表达式的一种语法,它使得从数组中解包(拆分)出值,或者从对象中解包(拆分)出属性,然后将它们赋值到不同的变量上成为可能。
这里有一个例子。你可以尝试着这么写:
let a, b, rest;
[a, b] = [10, 20];
console.log(a);
// expected output: 10
console.log(b);
// expected output: 20
[a, b, ...rest] = [10, 20, 30, 40, 50];
console.log(rest);
// expected output: Array [30,40,50]
var one = arr[0];
var two = arr[1];
var
来防止变量污染全局作用域。 - Mathias Bynensvar
,而不是有两个单独的var
声明。 - Mathias Bynens我的示例适用于您的示例,但也适用于您不知道数组或数组长度的情况。
arr = ['one', 'two'];
var length = arr.length;
for (var i = 0; i < length; i++)
{
var val = arr[i];
eval('var '+arr[i]+'= arr[i];');
}
假设你有两个变量。第一个是名为“one”的变量,其值为“one”,第二个是名为“two”的变量,其值为“two”。 你的问题已经解决了! 但是对于这段代码片段,我创建了额外的元素来显示这些变量,并将它们记录在日志中。
arr = ['one', 'two'];
var length = arr.length;
for (var i = 0; i < length; i++)
{
var val = arr[i];
eval('var '+arr[i]+'= arr[i];');
}
var p = document.createElement("p");
p.innerHTML = one + " " + two;
document.body.appendChild(p);
console.log(one, two);
arr = ['one', 'two'];
var length = arr.length;
for (var i = 0; i < length; i++)
{
var val = arr[i];
eval('var '+arr[i]+'= arr[i];');
}
var p = document.createElement("p");
p.innerHTML = one + " " + two;
document.body.appendChild(p);
console.log(one, two);