Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 具体如何使用;[……”是;作为参数工作?_Javascript_Arrays - Fatal编程技术网

Javascript 具体如何使用;[……”是;作为参数工作?

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

我在网上做一些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,c"]
我最终学习了concat方法,但最流行的解决方案使用了以下语句

function (arr){
  return [].concat.apply([],arr);
}

有人能在这里解释一下
[]
的用法吗?我不明白这是如何产生正确的结果的(并且没有在页面上给出解释)。我知道还有很多时候空括号被用作参数和标签数组,因此了解这里的用法可能有助于我将来自己使用它。

让我们将其拆分为多行,以便更容易描述。第
D
行的描述具体回答了您的问题

[]          // A
    .concat // B
    .apply( // C
        [], // D
        arr // E
    );
  • A
    是一个数组,但在这里它只是用来作为访问的快捷方式
  • B
    Array.prototype中的方法
  • 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]);