这是我尝试的:
let a = [[1,2], [3,4]];
a.map(val => ...val)
// => SyntaxError: expected expression, got '...'
// Expected output: [1,2,3,4]
我尝试使用明确的return
语句和周围值,但没有括号,但没有任何作用...
我只是想知道是否有一种简单的方法可以返回"传播的数组"?
编辑:现在我已经看到了这个问题,它在传播操作员的工作原理方面具有准确性p>
这不是有效的语法,要为此,您需要将数组的数组分布在某种类型的容器中(例如数组)。但是,如果您要做类似:
的事情a.map(val => [...val])
您将不是对您的数组做了很多事情,而是最终获得了同一数组的副本。因此,您可以使用.map
以外的其他方法,例如.reduce
或.flatMap
/.flat
来实现所需的输出:
使用 .reduce
与差异语法:
let a = [[1,2], [3,4]];
let res = a.reduce((acc, val) => [...acc, ...val], []);
console.log(res)
使用.flatMap()
:
let a = [[1,2], [3,4]];
let res = a.flatMap(val => val); // map the contents (without the holding array) [[1, 2], [3, 4]] -> [1, 2, [3, 4]] -> [1, 2, 3, 4]
console.log(res)
.flatMap()
在这里是没有用的,因此使用.flat()
只是足够:
let a = [[1,2], [3,4]];
let res = a.flat();
console.log(res)
尝试使用 a.flatMap(x=>x);
到平面数组和地图元素或 flat
(没有映射)
a.flat();
let a = [[1,2], [3,4]];
let r=a.flat();
console.log(r);
在flat
ARG中,您可以设置深层平坦 - 设置Infinity
将固定任何嵌套数组
let a = [[1,2,[3,4,[5,[6]]]], [[7,[8]],9]];
let r=a.flat(Infinity);
console.log(r);
如注释中所写,函数只能返回一个 value。
但是有一个简单的技巧您可以使用的内容:
let a = [[1,2], [3,4]];
a.reduce((a,b) => a.concat(b),[])
// Expected output: [1,2,3,4]