如何按字母顺序对数组内对象的键进行排序?
按字母顺序排列数组中对象的键
问题场景
原始数组:
var sample = [{ pin_code: "110015", city: "New Delhi", address: "xyz", }]
期望输出(对象按键的字母顺序排列):
var sample = [{ address: "xyz", city: "New Delhi", pin_code: "110015", }]
解决方案
可以写一个工具函数处理单个对象的键排序,再用数组方法批量处理数组里的每个对象:
// 单个对象按键排序的函数 function sortObjKeys(obj) { // 提取键并按字母排序 const sortedKeys = Object.keys(obj).sort(); // 重新构建排序后的对象 return sortedKeys.reduce((result, key) => { result[key] = obj[key]; return result; }, {}); } // 处理目标数组 var sample = [{ pin_code: "110015", city: "New Delhi", address: "xyz", }]; // 生成新的排序后数组 const sortedSample = sample.map(item => sortObjKeys(item)); console.log(sortedSample);
补充说明
Object.keys(obj).sort():默认的sort()方法会按英文字母的Unicode顺序排序,刚好满足需求。- 如果想直接修改原数组,不用生成新数组,可以换成
forEach遍历赋值:
sample.forEach((item, idx) => { sample[idx] = sortObjKeys(item); });
内容的提问来源于stack exchange,提问作者Ridhanshi Bhatia
相关产品推荐
相关产品推荐

