在Objects Javascript数组中添加一个Object

时间:2018-01-03 18:24:53

标签: javascript arrays json object

我需要在数组中添加一个由键标识的对象,该数组指定course属性中的id。

数组

[{
  "course": 1035, <- The id to find in the objects
  "start_time": "2018-01-04T20:55:00Z",
  "end_time": "2018-01-04T22:00:00Z",
  "details": { <- it has to be created
    <- here the corresponding object according to the id, 
        in this case 1035
  }
 }, {
  "course": 1106,
  "start_time": "2018-01-04T21:00:00Z",
  "end_time": "2018-01-04T22:00:00Z",
}]

对象

{
  "1035": {
    "id": 1035,
    "title": "Some Title1",
    "slug": "live-show",
    "free": true,
    "order": 0,
    "color": "#CB13A1"
  },
  "1106": {
    "id": 1106,
    "title": "Some Title2",
    "slug": "live-show",
    "free": true,
    "order": 0,
    "color": "#CB13A1"
  }
}

预期结果

[{
  "course": 1035,
  "start_time": "2018-01-04T20:55:00Z",
  "end_time": "2018-01-04T22:00:00Z",
  "details": {
    "id": 1035,
    "title": "Some Title1",
    "slug": "live-show",
    "free": true,
    "order": 0,
    "color": "#CB13A1"
  }
 }, {
  "course": 1106,
  "start_time": "2018-01-04T21:00:00Z",
  "end_time": "2018-01-04T22:00:00Z",
  "details": {
    "id": 1106,
    "title": "Some Title2",
    "slug": "live-show",
    "free": true,
    "order": 0,
    "color": "#CB13A1"
  }
}]

3 个答案:

答案 0 :(得分:3)

单行而不改变你的对象/数组(这通常是一个坏主意)。

target.map(item => Object.assign({}, item, { details: source[item.course]}));

其中target = The Arraysource = The Objects

答案 1 :(得分:1)

var arr =[{
  "course": 1035, 
  "start_time": "2018-01-04T20:55:00Z",
  "end_time": "2018-01-04T22:00:00Z",
  "details": {
  }
 }, {
  "course": 1106,
  "start_time": "2018-01-04T21:00:00Z",
  "end_time": "2018-01-04T22:00:00Z",
}];

var obj = {
  "1035": {
    "id": 1035,
    "title": "Some Title1",
    "slug": "live-show",
    "free": true,
    "order": 0,
    "color": "#CB13A1"
  },
  "1106": {
    "id": 1106,
    "title": "Some Title2",
    "slug": "live-show",
    "free": true,
    "order": 0,
    "color": "#CB13A1"
  }
};

arr.forEach(item=>{ 
       item.details = obj[item.course];
  });
console.log(arr);

/*RESULT:
[
  {
    "course": 1035,
    "start_time": "2018-01-04T20:55:00Z",
    "end_time": "2018-01-04T22:00:00Z",
    "details": {
      "id": 1035,
      "title": "Some Title1",
      "slug": "live-show",
      "free": true,
      "order": 0,
      "color": "#CB13A1"
    }
  },
  {
    "course": 1106,
    "start_time": "2018-01-04T21:00:00Z",
    "end_time": "2018-01-04T22:00:00Z",
    "details": {
      "id": 1106,
      "title": "Some Title2",
      "slug": "live-show",
      "free": true,
      "order": 0,
      "color": "#CB13A1"
    }
  }
]
*/

答案 2 :(得分:-1)

你可以这样做:

Object.keys(object).map(key => {
  const obj = object[key]
  // here, you can add all missed keys to your object
  return obj
})