如何替换JavaScript对象数组中的键和值,同时保持顺序,求大佬指导?-灵析社区

biubiuuuuu

原数据 tableData = [ { A: '12A', B: '12B' }, { A: '13A', B: '13B' } ] D替换key和value中的A之后,顺序变了 ![](https://wmprod.oss-cn-shanghai.aliyuncs.com/c/user/20241011/668016b2e1f276122492b7b3035c66c5.png) HTML渲染 {{ scope.row[keysData[index]] }} 禁用 {{ scope.row[keysData[index]] }} 启用 ![](https://wmprod.oss-cn-shanghai.aliyuncs.com/c/user/20241011/33530f1196918550546e181ef63f67d4.png) ![](https://wmprod.oss-cn-shanghai.aliyuncs.com/c/user/20241011/668016b2e1f276122492b7b3035c66c5.png) 替换方法 this.tableData.forEach(item => { for (let k in item) { if (k == column.property && item[k] != null) { item[k] = item[k].replace(k, value) if (item.hasOwnProperty(column.property)) { item[value] = item[k] delete item[k] } } } }) 这个是座位图,每一个key是每一列的编号,编号修改了,那一列的座位号中的字母也要跟着变,现在头疼的是改完后数据顺序变了,编码和座位号对不上,所以我希望得到结果是替换完之后,数据顺序保持不变。或者大家有别的好方法好思路可以指导一下 tableData = [ { D: '12D', B: '12B' }, { D: '13D', B: '13B' } ]

阅读量:191

点赞量:0

问AI
"Javascript" 中对象的键的顺序遵循数字键的升序和非数字键的插入顺序。也就是说,"JS" 会把看起来像数字的键提前并按升序排序,剩下的按插入顺序排序,如: const obj = { k1: 'v1', k2: 'v2', '1': '1', '0': '0' } // 0 1 k1 k2 所以只要键不是数字就可以 function replaceObjKeyWithOrder( obj: T, kOld: keyof T & string, kNew: string, ) { const entries = Object.entries(obj), entry = entries.find(([k]) => k === kOld) entry && (entry[0] = kNew) return Object.fromEntries(entries) } const tableData = [ { A: "12A", B: "12B", }, { A: "13A", B: "13B", }, ], newTableData = tableData.map((v) => replaceObjKeyWithOrder(v, "A", "D")) console.log("before:", tableData) console.log("after:", newTableData) before: [ { A: "12A", B: "12B" }, { A: "13A", B: "13B" } ] after: [ { D: "12A", B: "12B" }, { D: "13A", B: "13B" } ]