JavaScript 如何依据指定数组顺序重排对象数组中各对象的属性
按指定顺序调整对象数组内属性顺序的JS实现
实现逻辑
JS从ES6标准开始,对象的可枚举字符串属性会按照创建时的插入顺序排列,基于这个特性我们只需要按参考顺序逐个给新对象赋值,即可得到属性顺序符合要求的对象。
完整代码
// 待排序数组 let arrToSort = [ { Architect: 'Terry', Client: 'AZ', ClientType: 'Kids', Location: 'USA'}, { Architect: 'Mary', Client: 'XY', ClientType: 'Clothes', Location: 'Germany'}, { Architect: 'Jerry', Client: 'BC', ClientType: 'Construction', Location: 'Canada'} ]; // 属性顺序参考数组 let accordingTo = ["ClientType", "Architect", "Location", "Client"]; // 转换逻辑 const finalArr = arrToSort.map(originObj => { const sortedObj = {}; // 按参考顺序逐个插入属性到新对象 accordingTo.forEach(propName => { sortedObj[propName] = originObj[propName]; }); return sortedObj; }); // 输出结果 console.log(finalArr);
注意事项
如果你需要兼容ES5及更早的老旧JS环境,不要依赖普通对象的属性顺序,你可以改用
Map结构存储有序的键值对:
const finalMapArr = arrToSort.map(originObj => { const sortedMap = new Map(); accordingTo.forEach(propName => { sortedMap.set(propName, originObj[propName]); }); return sortedMap; });
内容的提问来源于stack exchange,提问作者teestunna
相关产品推荐
相关产品推荐

