我需要创建一个新对象并将其推入一个对象数组中。当我尝试下面的代码时,它会产生一个整数,它是数组长度的值。
const newThing = Object.assign(
{},
{
__typename: 'Group',
id: groupId,
},
);
// userGroups is an array of strings eg ['1', '2']
const newUserGroups = userGroups
.map(item => {
return Object.assign({}, { __typename: 'Group' }, { id: item });
})
.push( newThing );
console.log(newUserGroups);
答案 0 :(得分:0)
您可以使用Array#concat
,因为Array#push
返回数组的新长度,concat返回一个新数组。
const newUserGroups = userGroups
.map(item => {
return Object.assign({}, { __typename: 'Group' }, { id: item });
})
.concat(newThing);
答案 1 :(得分:0)
你错过了实施链接。
目前你的连锁店是这样的:
x = array.map().push()
所以x
将获得最后一个链式方法的返回值(push
)
并且push
返回数组的长度,而不是数组本身。
请参阅https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/push
删除链条就可以了:
const newThing = Object.assign({}, {
__typename: 'Group',
id: 'groupId',
}, );
// userGroups is an array of strings eg ['1', '2']
const userGroups = ['1', '2'];
const newUserGroups = userGroups
.map(item => {
return Object.assign({}, {
__typename: 'Group'
}, {
id: item
});
});
newUserGroups.push(newThing);
console.log(newUserGroups);