JavaScript中如何保证对象key的顺序与指定数组排列一致?
解决方法
你遇到的问题本质是直接修改原有对象时,已存在的键不会调整插入顺序,导致最终键位错乱。
核心原理
ES6及之后的标准中,普通对象的字符串类型键会严格按照插入顺序存储,JSON.stringify序列化时也会遵循该顺序。只要我们按照你指定的allKeysFormatted顺序,从零开始构建新对象,就能保证键顺序完全符合预期。
可用代码
var mainArray = [{"name": "Mike", "gender": "male"}, {"name": "Tom", "gender": "male", "email": "tom@yahoo.com"}, {"name": "John", "gender": "male", "phoneNumber": "123456"}]; var allKeysFormatted = ["name", "gender", "email", "phoneNumber"]; const result = mainArray.map(originObj => { const formattedObj = {}; allKeysFormatted.forEach(key => { // 空值合并运算符,仅键值为undefined/不存在时赋值为null formattedObj[key] = originObj[key] ?? null; // 如果需要把0/空字符串等假值也替换为null,换成下行即可 // formattedObj[key] = originObj[key] || null; }); return formattedObj; }); console.log(JSON.stringify(result));
补充说明
- 不要在原有对象上直接补键,已存在的键的插入顺序不会因为你重新赋值就改变,只有新插入的键会排在末尾,这是你原代码乱序的根本原因。
- 现代所有主流浏览器、Node.js环境都支持该特性,无需额外兼容处理。
内容的提问来源于stack exchange,提问作者StormTrooper
相关产品推荐
相关产品推荐

