尝试将对象推入对象数组会将其转换为整数

时间:2018-03-14 09:18:00

标签: javascript

我需要创建一个新对象并将其推入一个对象数组中。当我尝试下面的代码时,它会产生一个整数,它是数组长度的值。

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);

2 个答案:

答案 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);