代码之家  ›  专栏  ›  技术社区  ›  shuk

将数组复制到另一个对象属性javascript

  •  0
  • shuk  · 技术社区  · 7 年前

    我有两个目标:

    Group 它有一个 users 属性,包含ObjectId数组:

    ["59f5c8b62f73d036bc4f5673","59f5c7d42f73d036bc4f566b",
    "59f5c81a2f73d036bc4f566d","59f5c8482f73d036bc4f566f"]
    

    另一个对象有一个属性,需要用objectid的精确数组填充,所以当我在后面创建它时,它现在看起来是这样的:

    var object = new Object({
          title: req.body.title
          group: req.params.id,
          objectArray: { user: group.users, value: 1 }
        });
    

    我预计人口如下:

    object: {
        title: some-title,
        group: someRefId,
        objectArray: [ 
           {user: ObjectId1, value: 1},
           {user: ObjectId2, value: 1},
           {user: ObjectId3, value: 1},
           {user: ObjectId4, value: 1}
        ]
    }
    

    我需要以某种方式遍历该数组,然后声明 {user: user of group.users, value:1} 或者别的什么。我不知道如何在声明新对象时遍历该数组。。。

    2 回复  |  直到 7 年前
        1
  •  4
  •   Alec Fenichel    7 年前

    var req = {
      body: {
        title: 'some-title'
      },
      params: {
        id: 'someRefId'
      }
    };
    
    var group = {
      users: [
        "59f5c8b62f73d036bc4f5673",
        "59f5c7d42f73d036bc4f566b",
        "59f5c81a2f73d036bc4f566d",
        "59f5c8482f73d036bc4f566f"
      ]
    };
    
    var object = {
      title: req.body.title,
      group: req.params.id,
      objectArray: group.users.map(function(user) {
        return {
          user: user,
          value: 1
        };
      })
    };
    
    console.log(object);
        2
  •  1
  •   fubar    7 年前

    你可以用 Array.prototype.map 这样做。

    ES6

    ...
    objectArray: group.users.map((user) => ({ user, value: 1 }))
    ...
    

    ES5

    ...
    objectArray: group.users.map(function (user) {
        return { 
            user: user, 
            value: 1 
        };
    })
    ...