gpt4 book ai didi

javascript - 如何使用 IndexString 对 Javascript 数组进行排序,例如 : a ['String' ]

转载 作者:行者123 更新时间:2023-11-29 21:08:21 25 4
gpt4 key购买 nike

我有一个像这样的 JS 数组

CDate['1997-02-11']={dc: 3, da: 1, dm: 4};
CDate['1998-03-18']={dc: 6, da: 1, dm: 1};
CDate['1999-02-1']={dc: 4, da: 1, dm: 0};
CDate['2001-02-11']={dc: 1, da: 1, dm: 4};
CDate['2000-02-11']={dc: 3, da: 1, dm: 4};
CDate['1985-03-18']={dc: 6, da: 1, dm: 1};
CDate['1999-02-1']={dc: 4, da: 1, dm: 0};

我使用这个 CDates 作为函数将数据拆分为 4 个数组以生成图表

for(var Dt in cDate)
{ console.log(Dt);
chDate.push(Dt);
chDa.push(cDate[Dt].da);
chDm.push(cDate[Dt].dm);
chDc.push(cDate[Dt].dc);
};

并且在控制台中,我可以看到打印的日期未排序。所以我的图表没有按时间顺序看。当我搜索时,有很多函数可以根据键或属性值对数组进行排序,但不能对“KEY”或“INDEX”进行排序。

有什么办法吗?

最佳答案

一些观察:

  • CDate 不是一个数组,它是一个对象。对象属性在 JavaScript 中是未排序的,并且对象中不能有重复的键(就像键 1999-02-1 一样)。
  • 您可以使用 Object.keys() 获取对象的键.
  • 然后可以使用 Array.prototype.sort() 对键进行排序方法,但是由于您的日期格式,自然(词汇)排序顺序不合适(例如 2017-01-10 将在 2017 之前结束-02-2).
    在下面的代码中,我更正了日期格式。如果您无法更正日期格式,则必须编写自己的排序逻辑。

let CDate = {};
CDate['1997-02-11']={dc: 3, da: 1, dm: 4};
CDate['1998-03-18']={dc: 6, da: 1, dm: 1};
CDate['1999-02-01']={dc: 4, da: 1, dm: 0};
CDate['2001-02-11']={dc: 1, da: 1, dm: 4};
CDate['2000-02-11']={dc: 3, da: 1, dm: 4};
CDate['1985-03-18']={dc: 6, da: 1, dm: 1};

let chDate = [];
let chDa = [];
let chDm = [];
let chDc = [];

let keys = Object.keys(CDate).sort();

keys.forEach(key => {
chDate.push(key);
chDa.push(CDate[key].da);
chDm.push(CDate[key].dm);
chDc.push(CDate[key].dc);
});

console.log(chDate);
console.log(chDa);
console.log(chDm);
console.log(chDc);

关于javascript - 如何使用 IndexString 对 Javascript 数组进行排序,例如 : a ['String' ],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42895662/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com