如何根据对象内的date数组排序,同步调整同对象其他数组顺序
实现方案
核心逻辑是先将三个数组的同索引关联元素绑定为一个整体,排序后再拆分回原结构:
- 按索引把三个数组的对应元素组合为对象数组
- 对组合后的数组按date字段排序(可直接复用你现有的date排序逻辑)
- 将排序后的数组拆分,分别赋值回原对象的三个属性
完整代码示例:
const test = { data1: ["3", "2", "1"], data2: ["lorem", "ipsum", "dolor"], date: ["2021.01.01", "2022.02.02", "2023.03.03"], }; // 合并关联元素 const combinedList = test.date.map((dateVal, idx) => ({ date: dateVal, d1: test.data1[idx], d2: test.data2[idx] })); // 按date升序排序,可根据需求调整排序规则 combinedList.sort((a, b) => new Date(a.date) - new Date(b.date)); // 拆分回原结构 test.date = combinedList.map(item => item.date); test.data1 = combinedList.map(item => item.d1); test.data2 = combinedList.map(item => item.d2);
如果你的date字符串格式是固定的YYYY.MM.DD,不需要转Date对象也能直接排序,把排序逻辑替换为combinedList.sort((a, b) => a.date.localeCompare(b.date))即可,性能更高。
内容的提问来源于stack exchange,提问作者oakpep
相关产品推荐
相关产品推荐

