在迭代数据时向对象添加值

时间:2018-06-11 10:48:43

标签: javascript arrays

我有一组JSON - 我需要迭代,因为我基本上需要创建一个包含某些标识符的字符串。目前,我正在绘制数据,然后是刺激列表。 (我有来自事件的索引,因为我只需要来自该索引的数据)。

我遇到的问题是cell_id总是一样的。我需要创建一个字符串。

      const key = `cell_Id${cell_id}:step_Id${item.step_id}:study_id${studyId}:stim_id${item.stimulus_id}`

我怀疑我需要在对象中添加内容,因为我正在对数据进行交互 - 这是最好的方法吗?

感谢

这是JSON

{
  "study_id": 16,

  "data": [
    {
      "cell_id": 23,
      "stimulus_list": [
        {

          "stimulus_id": 96,
          "step_id": 62

        }
      ]
    },
    {
      "cell_id": 24,
      "stimulus_list": [
        {
          "stimulus_id": 95,
          "step_id": 61

        }
      ]
    }
  ]
}

 data
      .map(item => item.stimulus_list)
      .map(item => item[index]);

1 个答案:

答案 0 :(得分:0)

您可以在数据上使用嵌套映射,然后使用reduce。

展平结果



const obj = {
  "study_id": 16,

  "data": [
    {
      "cell_id": 23,
      "stimulus_list": [
        {

          "stimulus_id": 96,
          "step_id": 62

        }
      ]
    },
    {
      "cell_id": 24,
      "stimulus_list": [
        {
          "stimulus_id": 95,
          "step_id": 61

        }
      ]
    }
  ]
}

 const res = obj.data
      .map(item => {
      return [].concat(item.stimulus_list.map(stimulus => `cell_Id${item.cell_id}:step_Id${stimulus.step_id}:study_id${obj.study_id}:stim_id${stimulus.stimulus_id}`))
}).reduce((acc, item) => {
   acc = acc.concat(item)
   return acc;
}, [])
console.log(res)