Javascript 具体如何使用;[……”是;作为参数工作?
我在网上做一些javascript练习(codewars.com)。一个问题要求用户获取一个数组对象数组,并从整个数组中删除一个级别Javascript 具体如何使用;[……”是;作为参数工作?,javascript,arrays,Javascript,Arrays,我在网上做一些javascript练习(codewars.com)。一个问题要求用户获取一个数组对象数组,并从整个数组中删除一个级别 [] /* becomes */ [] [[1, 2, 3], ["a", "b", "c"], [1, 2, 3]] /* becomes */ [1, 2, 3, "a", "b", "c", 1, 2, 3] [[3, 4, 5], [[9, 9, 9]], ["a,b,c"]] /* becomes */ [3, 4, 5, [9, 9, 9], "a,b
[] /* becomes */ []
[[1, 2, 3], ["a", "b", "c"], [1, 2, 3]] /* becomes */ [1, 2, 3, "a", "b", "c", 1, 2, 3]
[[3, 4, 5], [[9, 9, 9]], ["a,b,c"]] /* becomes */ [3, 4, 5, [9, 9, 9], "a,b,c"]
我最终学习了concat方法,但最流行的解决方案使用了以下语句
function (arr){
return [].concat.apply([],arr);
}
有人能在这里解释一下
[]
的用法吗?我不明白这是如何产生正确的结果的(并且没有在页面上给出解释)。我知道还有很多时候空括号被用作参数和标签数组,因此了解这里的用法可能有助于我将来自己使用它。让我们将其拆分为多行,以便更容易描述。第D
行的描述具体回答了您的问题
[] // A
.concat // B
.apply( // C
[], // D
arr // E
);
是一个数组,但在这里它只是用来作为访问的快捷方式A
Array.prototype中的方法B
然后使用C
D
参数,作为基本对象和这是一个新数组的
参数列表,这是我们之前的E
arr
new_base_arr.concat(arr[0], arr[1], ..., arr[n]);
这里要解决的问题是调用参数数量不确定的函数。很好的解释!我读了几遍,因为你一直在更新。我从一开始就不确定
[].
中的[].
和([],arr)
是否是同一个数组对象。您继续使用Array.prototype
和call
分解重写,以及它看起来“更熟悉”的样子,让我完全掌握了它。非常感谢!
new_base_arr.concat(arr[0], arr[1], ..., arr[n]);