如何仅用ES5将JS对象中值相同的键归类并拼接为指定格式字符串
ES5实现对象同值键归类拼接方案
实现思路
- 先遍历原对象,以值为分组标识,将对应键存入同一数组,完成归类
- 遍历归类后的分组数据,按照要求的格式拼接为字符串即可
完整代码
var myObject = {"audi": "gas", "tesla": "electric", "bmw": "electric", "mercedes": "electric"}; // 第一步:按值归类键 var group = {}; Object.keys(myObject).forEach(function(key) { var currentVal = myObject[key]; if (!group[currentVal]) { group[currentVal] = []; } group[currentVal].push(key); }); // 第二步:拼接目标格式字符串 var resultParts = []; Object.keys(group).forEach(function(groupVal) { resultParts.push(group[groupVal].join(' ') + ': ' + groupVal); }); var finalResult = resultParts.join('. '); // 输出验证 console.log(finalResult); // 输出:tesla bmw mercedes: electric. audi: gas
原有代码问题说明
Object.values是ES2017才新增的API,不符合ES5语法要求- 双重循环逻辑冗余,会重复处理相同的值,没有必要
- 未做分组存储,直接拼接结果的逻辑错误,同时用到了ES6才支持的计算属性语法,不符合要求
内容的提问来源于stack exchange,提问作者Ndx
相关产品推荐
相关产品推荐

