【发布时间】:2025-12-12 12:15:01
【问题描述】:
想Array.concat 的事情总是很棘手。通常,我只想使用可变的Array.push,因为我只是在不可变数据上添加额外数据。所以,我通常这样做:
array[array.length] = newData;
我问了一个相关的问题,在这里得到了一些答案:How to store data of a functional chain
const L = (a) => {
const m = a => (m.list ? m.list : m.list = [])
.push(a) && m;
//use `concat` and refactor needed instead of `push`
//that is not immutable
return m(a); // Object construction!
};
console.log(L);
console.log(L(2));
console.log(L(1)(2)(3))
一些输出:
{ [Function: m] list: [ 2 ] }
{ [Function: m] list: [ 1, 2, 3 ] }
我觉得push应该替换为concat,但是push仍然让代码优雅,因为我们不想在这里准备另一个对象。
基本上,我想做:
arr1 = arr1.concat(arr2);
但是,有什么办法可以写
arr1[arr1.length] = arr2;
以嵌套数组结尾,并且不起作用。
【问题讨论】:
-
你到底想做什么?请说清楚一点。
-
const m = a => (m.list ? m.list : m.list = []).push(a) && m;那是...相当混乱的一行... -
a.push(...b)-- 你想要这个吗? -
@vibhor1997a --
arr1[arr1.length] = ...arr2;-- 这甚至不是一个有效的语法。 -
@31piy,你说
a.push(...b)不是一个有效的语法吗?
标签: javascript arrays concat