JavaScript基础教程 如何合并数组对象中相同的属性值
沉沙 2018-08-20 来源 : 阅读 1035 评论 0

摘要:本篇教程介绍了JavaScript基础教程 如何合并数组对象中相同的属性值,希望阅读本篇文章以后大家有所收获,帮助大家对JavaScript的理解更加深入。

本篇教程介绍了JavaScript基础教程 如何合并数组对象中相同的属性值,希望阅读本篇文章以后大家有所收获,帮助大家对JavaScript的理解更加深入。

<

将以下数组对象合并相同值

var arr = [{
                "name": "语文",
                "fraction": 80
            }, {
                "name": "数学",
                "fraction": 70
            }, {
                "name": "语文",
                "fraction": 50
            }, {
                "name": "语文",
                "fraction": 90
            }, {
                "name": "数学",
                "fraction": 100
            }, {
                "name": "数学",
                "fraction": 55
            }, {
                "name": "语文",
                "fraction": 99
            }]

 


 
在实际项目中,我们经常会遇到这种格式的数据,这种格式让人阅读起来很不直观,而且不利于代码的维护。废话不多说了直接上代码
第一种方式:

var res =[];
var narr=[];
    for(var i =0;i<arr.length;i++){
        var n = res.indexOf(arr[i].name);
    if(n == -1){
        res.push(arr[i].name);
        narr.push({"name":arr[i].name,fraction:[arr[i].fraction]})
        }else{
        narr[n].fraction.push(arr[i].fraction)
        }
    }
console.log(narr)    


输出结果:[{
    "name": "语文",
    "fraction": [80, 50, 90, 99]
}, {
    "name": "数学",
    "fraction": [70, 100, 55]
}, {
    "name": "英语",
    "fraction": [55, 89]
}]

第二种方式:

arr = arr.map(function(item, index, arr) {
    const i = arr.find(_item => item.name === _item.name);
    if(i !== item) {
        i.fraction.push(item.fraction);
        return undefined;
    } else {
        i.fraction = [i.fraction];
        return i;
    }
}).filter(item => item !== undefined);


输出结果:
[{
    "name": "语文",
    "fraction": [80, 50, 90, 99]
}, {
    "name": "数学",
    "fraction": [70, 100, 55]
}, {
    "name": "英语",
    "fraction": [55, 89]
}]

 
这样看起来是不是顺眼多了。
   

本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标WEB前端JavaScript频道!

本文由 @沉沙 发布于职坐标。未经许可,禁止转载。
喜欢 | 1 不喜欢 | 0
看完这篇文章有何感觉?已经有1人表态,100%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式AI+学习就业服务平台 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved