javascript - 已知一个数组里面的内容,如何提取出相同的内容组成一个新的数组

查看:144
本文介绍了javascript - 已知一个数组里面的内容,如何提取出相同的内容组成一个新的数组的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

目前已知一个数组,结构如下所示

    var list = [
        {
            cfi: "epubcfi(/6/8[chapter3])",
            href: "chapter3.html",
            id: "chapter3",
            label: "第 2 章 边城二",
            spinePos: 3,
            notes: {
                text: "河中水皆豆绿色,天气又那么明朗,鼓声蓬蓬响着,翠翠抿着嘴一句话不说",
                url: "epubcfi(/6/8[chapter3])"
            }
        },
        {
            cfi: "epubcfi(/6/8[chapter3])",
            href: "chapter3.html",
            id: "chapter3",
            label: "第 2 章 边城二",
            spinePos: 3,
            notes: {
                text: "人既醉倒后,无从入城,祖父为了责任又不便与渡船离开,留在河边的翠翠便不能不着急了",
                url: "epubcfi(/6/8[chapter3])"
            }
        },
        {
            cfi: "epubcfi(/6/18[chapter8])",
            href: "chapter8.html",
            id: "chapter8",
            label: "第 7 章 边城七",
            spinePos: 8,
            notes: {
                text: "照例如俗话说的,狗离不得屋,这些狗一离了自己的家,即或傍着主人,也变得非常老实了。",
                url: "epubcfi(/6/18[chapter8])"
            }
        },
        {
            cfi: "epubcfi(/6/18[chapter14])",
            href: "chapter14.html",
            id: "chapter14",
            label: "第 13 章 边城一三",
            spinePos: 14,
            notes: {
                text: "我要坐船下桃源县过洞庭湖,让爷爷满城打锣去叫我,点了灯笼火把去找我。",
                url: "epubcfi(/6/18[chapter14])"
            }
        }
    ];
    

数组中,包含多个相同的内容,现在想要把上面的数组转化成下面这样

var list = [
    {
        title: "第 2 章 边城二",
        num: 2,
        noteList: [
            {
                url: epubcfi(/6/8[chapter3]),
                text: '河中水皆豆绿色,天气又那么明朗,鼓声蓬蓬响着,翠翠抿着嘴一句话不说'
            },
            {
                url: epubcfi(/6/8[chapter3]),
                text: "人既醉倒后,无从入城,祖父为了责任又不便与渡船离开,留在河边的翠翠便不能不着急了"
            }
        ]
    },
    {    
        title: "第 7 章 边城七",
        num: 1,
        noteList: [
            {
                url: "epubcfi(/6/18[chapter8])",
                text: "照例如俗话说的,狗离不得屋,这些狗一离了自己的家,即或傍着主人,也变得非常老实了。"                
            }
        ]
    },
    {
        title: "第 13 章 边城一三",
        num: 1,
        noteList: [
            {
                url: "epubcfi(/6/18[chapter14])",
                text: "我要坐船下桃源县过洞庭湖,让爷爷满城打锣去叫我,点了灯笼火把去找我。"
            }
        ]
    }
];        

最终展示的结果就是像下面这样了。
其实就是有N个相同的标题,但是text不同的数组,现在想要整合成下面这样的,求助各位
非常感谢!

可能有人觉得这样的问题真的是so easy,但是对于有些人来说,这样的问题,其实在工作中是会遇到的,只是我之前没有遇到过,所以不知道该怎么处理。
说实话,如果自己能写出来,干嘛还要来网站上面求助呢?
并不是任何人都喜欢做伸手党的,我也不喜欢。
愿意回答的,我感激不尽,不愿意回答的,我也谢谢大家!
(上面的话有些偏激了,对不住大家)

解决方案

var  newList = [];
list.forEach(function(data){
  for(var i=0;i<newList.length;i++){
    if(newList[i].title === data.label){
      newList[i].nodeList.push(data.notes);
      newList[i].num++;
      return;
    }
  }
    newList.push({
      title:data.label,
      num:1,
      nodeList:[data.notes]
    });
});
console.log(newList);

这篇关于javascript - 已知一个数组里面的内容,如何提取出相同的内容组成一个新的数组的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆