如何在对象中连接 javascript 数组
How to concat javascript array in an object
有人可以帮我将一个数组连接到另一个属于 javascript 对象的数组吗?到目前为止我已经尝试过:
var someObj = {};
someObj.someArray = ['1', '2', '3', '4'];
var randomArray = ['5', '6', '7']
someObj.someArray.concat(randomArray);
console.log(someObj);
但是,最终对象包含原始数组,而不是与 randomArray
连接的原始数组。
这是我的 fiddle:
看看 MDN documentation 的 Array.prototype.concat
:
The concat()
method is used to merge two or more arrays. This method does not change the existing arrays, but instead returns a new array. (Emphasis mine)
如您所见,该方法实际上并没有就地更改数组。新数组 从方法中返回 ,因此您需要将 分配给返回的数组,如下所示:
someObj.someArray = someObj.someArray.concat(randomArray);
Array.concat()
不会修改原始数组,但会 return 修改串联结果。您需要使用 Array.concat()
的 return 值来显式设置原始对象 属性。更新了你的 fiddle here.
你可以这样做而不是 .concat()
。
var someObj = {};
someObj.someArray = ['1', '2', '3', '4'];
var randomArray = ['5', '6', '7']
randomArray.forEach(v => someObj.someArray.push(v));
console.log(someObj);
concat
创建一个新数组并像这样使用
someObj.someArray = someObj.someArray.concat(randomArray);
另一种方法是通过插入附加元素来就地修改数组。为此,请像这样将 push
与 Function.apply
一起使用:
[].push.apply(someObj.someArray, randomArray);
Function.apply
有两个参数,第一个是 this
值,第二个是用于填充函数参数的数组。这里,Function.apply
导致 randomArray
的元素作为(多个)参数从数组解包到 push 函数,而不是将整个数组作为单个元素推送。 []
是创建空白数组以获取推送功能的技巧,而不是更冗长的 someObj.someArray.push
或 Array.prototype.push
.
回应上面的答案。使用 .concat() 方法绝对是正确的方法。您还可以使用 ES6 扩展运算符,它可以像 push 和 concat 一样使用。这将为您提供所需的结果。
var someObj = {};
someObj.someArray = ['1', '2', '3', '4'];
var randomArray = ['5', '6', '7']
someObj.someArray.push(...randomArray);
console.log(someObj);
有人可以帮我将一个数组连接到另一个属于 javascript 对象的数组吗?到目前为止我已经尝试过:
var someObj = {};
someObj.someArray = ['1', '2', '3', '4'];
var randomArray = ['5', '6', '7']
someObj.someArray.concat(randomArray);
console.log(someObj);
但是,最终对象包含原始数组,而不是与 randomArray
连接的原始数组。
这是我的 fiddle:
看看 MDN documentation 的 Array.prototype.concat
:
The
concat()
method is used to merge two or more arrays. This method does not change the existing arrays, but instead returns a new array. (Emphasis mine)
如您所见,该方法实际上并没有就地更改数组。新数组 从方法中返回 ,因此您需要将 分配给返回的数组,如下所示:
someObj.someArray = someObj.someArray.concat(randomArray);
Array.concat()
不会修改原始数组,但会 return 修改串联结果。您需要使用 Array.concat()
的 return 值来显式设置原始对象 属性。更新了你的 fiddle here.
你可以这样做而不是 .concat()
。
var someObj = {};
someObj.someArray = ['1', '2', '3', '4'];
var randomArray = ['5', '6', '7']
randomArray.forEach(v => someObj.someArray.push(v));
console.log(someObj);
concat
创建一个新数组并像这样使用
someObj.someArray = someObj.someArray.concat(randomArray);
另一种方法是通过插入附加元素来就地修改数组。为此,请像这样将 push
与 Function.apply
一起使用:
[].push.apply(someObj.someArray, randomArray);
Function.apply
有两个参数,第一个是 this
值,第二个是用于填充函数参数的数组。这里,Function.apply
导致 randomArray
的元素作为(多个)参数从数组解包到 push 函数,而不是将整个数组作为单个元素推送。 []
是创建空白数组以获取推送功能的技巧,而不是更冗长的 someObj.someArray.push
或 Array.prototype.push
.
回应上面的答案。使用 .concat() 方法绝对是正确的方法。您还可以使用 ES6 扩展运算符,它可以像 push 和 concat 一样使用。这将为您提供所需的结果。
var someObj = {};
someObj.someArray = ['1', '2', '3', '4'];
var randomArray = ['5', '6', '7']
someObj.someArray.push(...randomArray);
console.log(someObj);