gpt4 book ai didi

javascript - 排序数组但保留原始索引

转载 作者:行者123 更新时间:2023-11-30 17:46:56 25 4
gpt4 key购买 nike

我有一个索引数组,称为 indexSelected。还有一组称为天气的对象。我已将我正在处理的所有站点名称放入一个名为 stationName 的数组中。我想按字母顺序对这个数组进行排序,同时保留原始索引,以便我可以引用与对象关联的其他属性。我已经尝试了下面的方法,但是,我似乎无法让它工作。

var stationName=[];
for (var i=0; i<indexSelected.length; i++) {
stationName.push(weather[indexSelected[i]]["Site Name"]);
}

var copyStationName = stationName.slice(0)
var sortedStationName = stationName.sort();
var originalIndex=[];
for (var i=0; i<stationName.length; i++) {
originalIndex.push(copyStationName.indexOf(sortedStationName[i]))
}

var station=[];
for (var i=0; i<indexSelected.length; i++) {
station.push(weather[originalIndex[i]]["Site Name"]);
}

此站点数组用于检查原始索引数组是否正确。它不是,我不知道为什么。我会很感激一些帮助,或者另一种方法来排序这个数组。我希望将所有数据放入一个表中,按站点名称的字母顺序排序。谢谢

最佳答案

构建一个包含名称和索引的对象数组,然后使用 custom comparison function对于排序。例如

var stationInfo = [];
for (var i=0; i<indexSelected.length; i++) {
var idx = indexSelected[i];
stationInfo.push({name: weather[idx]["Site Name"], idx: idx);
}

stationInfo.sort(function(a, b) {
// a & b are the array items (info objects) created above, so make 'em
// point at the `name` property we want to sort by
a = a.name;
b = b.name;
// ... then return -1/0/1 to reflect relative ordering
return a < b ? -1 : (a > b ? 1 : 0);
})

// output a name + index pair
console.log(stationInfo[0].name, stationInfo[0].idx);

关于javascript - 排序数组但保留原始索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19962633/

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