合并数组对象中相同的属性值

面试题中往往会遇到这样的笔试题,将以下数组对象合并相同值

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]
}]

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

本人所发博客都是自己所遇到的,从踩坑到填坑的问题。希望与大家多多交流讨论。

 

p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Consolas; color: #f9f9f5 }
span.s1 { color: #75e0f2 }
span.s2 { color: #fd4485 }
span.s3 { color: #bd99ff }
span.s4 { color: #ebe087 }
span.Apple-tab-span { white-space: pre }

原文地址:https://www.cnblogs.com/hubovv/p/9111075.html

时间: 2024-10-13 15:02:25

合并数组对象中相同的属性值的相关文章

django 获取request请求对象及response响应对象中的各种属性值

1 django request对象和HttpResponse对象 2 HttpRequest对象(除非特殊说明,所有属性都是只读,session属性是个例外) 3 HttpRequest.scheme 请求方案(通常为http或https) 4 HttpRequest.body 字节字符串,表示原始http请求正文 5 HttpRequest.path 字符串,表示请求的页面的完整路径,不包含域名 6 7 HttpRequest.get_host() 获取主机地址 8 9 HttpReques

在实体对象中访问导航属性里的属性值出现异常“There is already an open DataReader associated with this Command which must be closed first”

在实体对象中访问导航属性里的属性值出现异常“There is already an open DataReader associated with this Command which must be closed first”. public class User { public long UserId { get; set; } public string UserName { get; set; } public string UserPwd { get; set; } public D

数组与字符串的相互转化及数组对象的3个属性

一.数组与字符串的相互转化 <script>var obj="new1".replace(/(.)(?=[^$])/g,"$1,").split(",");       //字符串转化为数组 var obj2 = "new2".split("");                                            //字符串转化为数组alert(obj);alert(obj.

编程题:1. var person = &#39;{name:&quot;Lily&quot;,sex:&quot;famale&quot;,age:24,country:&quot;US&quot;}&#39;;将person转换成JSON对象并便利每个属性值。

/// <summary> /// Json工具类 /// </summary> public class JsonUtility { private static JsonUtility _instance = new JsonUtility(); /// <summary> /// 单例 /// </summary> public static JsonUtility Instance { get { return _instance; } set {

删除一个Javascript对象中的一个属性

一个Javascript对象如下 var myObject = { "ircEvent": "PRIVMSG", "method": "newURI", "regex": "^http://.*" }; 想要达到的目的如下 var myObject = { "ircEvent": "PRIVMSG", "method": &qu

js 去掉数组对象中的重复对象

在数组对象中去掉重复的对象: export function deteleObject(obj) { var uniques = []; var stringify = {}; for (var i = 0; i < obj.length; i++) { var keys = Object.keys(obj[i]); keys.sort(function(a, b) { return (Number(a) - Number(b)); }); var str = ''; for (var j =

小程序开发之改变data中数组或对象的某一属性值

前言:在小程序的开发中,我们在view中便利data中数组或对象时,很多情况下需要在js中动态改变数组或者对象中某一香的属性值. 效果图: 我给大家总结了案例如下: wxml如下: <scroll-view class='hd-cont' scroll-x="true" style='width: 100%'> <view wx:for="{{sDate}}" wx:key="{{index}}" class='date-con

java反射获取对象的属性值和对象属性中的子属性值

近段时间在做web项目,前端使用的是jQuery EasyUI. 为方便需要,准备做一个前端通用的Datagird导出Excel功能,博主也考虑过思路和最终功能,1.前端选中行导出:2.当前页导出:3.当前过滤条件导出. 想偷懒在网上找找已有的代码改改,发现大部分只能满足个别需求,使用JS导出只能满足前端,使用代码才能实现3功能. ...... 好了,说了一堆废话,回归正题,本文是在做通用自定义字段导出时所需要,根据属性名去查找对象和子对象,找到对应属性值,抓取回来放到Excel中. 直接上代码

用JS获取CSS中的某个属性值:getComputedStyle

css文件中如何得到某个属性值: 一.getComputedStyle是一个可以获取当前元素所有最终使用的CSS属性值, 返回的是一个CSS样式声明对象 , 只读, 此方法支持Firefox浏览器; 语法:var style=window.getComputedStyle("元素","伪类");第一个参数是必须的,第二个为可选的. 二.currentStyle 是一款可以兼容IE浏览器的属性返回的是当前所有最终使用的CSS属性值, 利用element.Current