问答

以下对象到数组的转换,有没有优雅的方式

作者:admin 2021-06-12 我要评论

const obj = { M1:1, M2:2, M3:3, P1:1, P2:2, P3:2, P4:1}arr = [ {name:"M",value:6}, {name:"P",value:6} ] ### 转换规则没有描述清楚啊,arr 里面 value 6 ...

在说正事之前,我要推荐一个福利:你还在原价购买阿里云、腾讯云、华为云服务器吗?那太亏啦!来这里,新购、升级、续费都打折,能够为您省60%的钱呢!2核4G企业级云服务器低至69元/年,点击进去看看吧>>>)
const obj = {
    M1:1,
    M2:2,
    M3:3,
    P1:1,
    P2:2,
    P3:2,
    P4:1
}

arr = [
     {name:"M",value:6},
     {name:"P",value:6}
 ]
###

转换规则没有描述清楚啊,arr 里面 value 6 哪里来的?
obj 里面也没有 6 啊


const arr = Object.entries(obj)
    .reduce((arr, [key, value]) => {
        const index = key.charCodeAt(0)
        if (arr[index]) arr[index] += value
        else arr[index] = value
        return arr
    }, [])
    .map((value, index) => ({
        name: String.fromCharCode(index),
        value
    }))
    .filter(i => i)
###

每个人心中的"优雅“是不一样的,并且往往”优雅“的代码会降低代码的可读性。

var obj = {
    M1:1,
    M2:2,
    M3:3,
    P1:1,
    P2:2,
    P3:2,
    P4:1
}

// Fist, group to {M: 6, P: 6}
var group = Object.keys(obj).reduce((group, key) => {
  const groupKey = key.replace(/^([a-z]+)\d+/i, '$1');
  group[groupKey] = obj[key] + (group[groupKey] || 0);
  return group;
}, {});

// Finally
var result = Object.keys(group).map(name => ({name, value: result[name]}))

console.log(result)
###

const arr = keys(obj).map((item)=>({name:item, value:obj[item]}))

版权声明:本文转载自网络,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。本站转载出于传播更多优秀技术知识之目的,如有侵权请联系QQ/微信:153890879删除

相关文章
  • 以下对象到数组的转换,有没有优雅的方

    以下对象到数组的转换,有没有优雅的方

  • 请问echarts可以设置上下2个legend效果

    请问echarts可以设置上下2个legend效果

  • js数组转换

    js数组转换

  • 卷积神经网络

    卷积神经网络

腾讯云代理商
海外云服务器