首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将数据推送到嵌套数组中的子数组?

如何将数据推送到嵌套数组中的子数组?
EN

Stack Overflow用户
提问于 2019-01-28 00:25:26
回答 3查看 626关注 0票数 0

试图构建一个数组,该数组输出数据如下:

  • 医疗保健 -数据驱动的洞察力,以改善医疗保健 -城市分析
  • 运输 -城市分析
  • 城市 -城市分析

我尝试过循环使用“专门知识”/“文本”,但我无法让它们一起工作,从而在console.log中获得所需的输出

任何和所有的帮助都将不胜感激。

代码语言:javascript
复制
    var items = [{
            "item": {
                "id": 0,
                "sector": 'Data',
                "expertise": ["Healthcare"],
                "text": "Data-driven insights to improve healthcare"
            }
        },
        {
            "item": {
                "id": 1,
                "sector": 'Data',
                "expertise": ["Healthcare", "Transport", "Cities"],
                "text": "Urban Analytics"
            }
        }
    }];

    var array = [];

    for (var i = 0; i < items.length; i++) {

        var arr = [{
            'title': items[i].item.sector,
            'items': []
        }];

        for (var j = 0, b = items[i].item.expertise.length; j < b; j++) {
            if (items[i].item.expertise[j] == expertise) {

                arr[0]['items'].push({
                    'list': items[i].item.text
                });

            }
        }

        array.push(arr);

    }

    console.log(array);
EN

回答 3

Stack Overflow用户

发布于 2019-01-28 00:38:02

我首先要建立一个相关专业知识和文本列表的对象,然后输出您想要的任何内容。例如:

代码语言:javascript
复制
var items = [{
  "item": {
    "id": 0,
    "sector": 'Data',
    "expertise": ["Healthcare"],
    "text": "Data-driven insights to improve healthcare"
  }
}, {
  "item": {
    "id": 1,
    "sector": 'Data',
    "expertise": ["Healthcare", "Transport", "Cities"],
    "text": "Urban Analytics"
  }
}]
    
const obj = items.reduce((res, { item }) => {
  item.expertise.forEach(e => {
    res[e] = res[e] || []
    if(res[e].indexOf(item.text) < 0){ res[e].push(item.text) }
  })
  return res
}, {})

Object.keys(obj).forEach(k => {
  console.log(k)
  obj[k].forEach(text => console.log(`-- ${text}`))
})

票数 0
EN

Stack Overflow用户

发布于 2019-01-28 00:45:13

你应该用地图

代码语言:javascript
复制
const array =  items.map(el => ({
    text: el.item.sector,
    items: [...el.item.expertise, {
        list : el.item.text
    }]
});
票数 0
EN

Stack Overflow用户

发布于 2019-01-28 01:43:06

这里有另一种使用reduce()的方法,也可以使用destructuringspread operator

代码语言:javascript
复制
var items = [
  {
    "item": {
      "id": 0,
      "sector": 'Data',
      "expertise": ["Healthcare"],
      "text": "Data-driven insights to improve healthcare"
    }
  },
  {
    "item": {
      "id": 1,
      "sector": 'Data',
      "expertise": ["Healthcare", "Transport", "Cities"],
      "text": "Urban Analytics"
    }  
  }
];

let res = items.reduce((acc, {item: {expertise, text}}) =>
{
     expertise.forEach(x => acc[x] = [...(acc[x] || []), text]);
     return acc;
}, {});


Object.entries(res).forEach(([k, v]) =>
{
    console.log(k + "\n->" + v.join("\n->"));
});

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54394193

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档