首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >循环将所有对象值设置为最后一个实例。

循环将所有对象值设置为最后一个实例。
EN

Stack Overflow用户
提问于 2017-04-05 19:07:43
回答 1查看 61关注 0票数 1

我试图迭代一个for循环,对数组排序5次。

代码语言:javascript
复制
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显示每个循环的预期输出,而第二个显示对象的每个对象值等于最后一个循环运行的输出。

代码语言:javascript
复制
["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"
...
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-04-05 19:28:36

每次调用sortCities时,都会返回对同一个数组的引用,只是排序不同。每次都需要创建一个新数组。有几种方法可以做到这一点,包括切片

代码语言:javascript
复制
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);
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43239654

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档