gpt4 book ai didi

javascript - 具体使用 "[]"作为参数如何工作?

转载 作者:数据小太阳 更新时间:2023-10-29 04:38:24 26 4
gpt4 key购买 nike

我在网上 (codewars.com) 做了一些 javascript 练习。一个问题要求用户获取一组数组对象并从整个数组中删除一个级别。

[] /* 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 concat来自 Array.prototype
  • 的方法
  • C 然后我们调用(使用 apply )
  • D thisArray 的参数,作为基础Object
  • E 参数列表,也就是我们之前的arr

因此,您可以使用 Array.prototype 重写它和 call作为

var new_base_arr = [];
Array.prototype.concat.call(
new_base_arr,
arr[0],
arr[1],
...
arr[n]
);

你可能看起来更熟悉写成

new_base_arr.concat(arr[0], arr[1], ..., arr[n]);

这里要解决的问题是调用一个参数数量不确定的函数。

关于javascript - 具体使用 "[]"作为参数如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33612213/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com