我试图迭代一个for循环,对数组排序5次。
let sortedCities = {};
for (let i = 0; i < 5; i++) {
sortedCities[i] = darkSkyHelper.sortCities(info,unsortedCities,i);
console.log(sortedCities[i]);
}
console.log(sortedCities);
static sortCities(info, cities, day) {
let sortedCities = cities.sort(function(a,b) {
return info[b].daily.data[day].precipProbability - info[a].daily.data[day].precipProbability;
})
return sortedCities;
}第一个console.log显示每个循环的预期输出,而第二个显示对象的每个对象值等于最后一个循环运行的输出。
["cin", "cle", "col", "nya", "laa", "was", "tex"]
["was", "nya", "cle", "cin", "col", "laa", "tex"]
["cle", "cin", "was", "nya", "laa", "col", "tex"]
["laa", "col", "cle", "cin", "was", "nya", "tex"]
["col", "tex", "cle", "laa", "cin", "was", "nya"]
Object {..}
0: Array[7]
0: "col"
1: "tex"
2: "cle"
3: "laa"
4: "cin"
5: "was"
6: "nya"
length: 7
__proto__: Array[0]
1: Array[7]
0: "col"
1: "tex"
2: "cle"
3: "laa"
4: "cin"
5: "was"
6: "nya"
...发布于 2017-04-05 19:28:36
每次调用sortCities时,都会返回对同一个数组的引用,只是排序不同。每次都需要创建一个新数组。有几种方法可以做到这一点,包括切片
static sortCities(info, cities, day) {
let sortedCities = cities.sort(function(a,b) {
return info[b].daily.data[day].precipProbability - info[a].daily.data[day].precipProbability;
})
return sortedCities.slice(0);
}https://stackoverflow.com/questions/43239654
复制相似问题