排序功能不起作用:按值对对象排序

时间:2019-12-04 20:51:16

标签: javascript

  <p id="demo">
  depending on what you clicked I will appear or hide.
  </p>

 <script>

  var items = [
    { name: "Edward", value: 21 },
    { name: "Sharpe", value: 37 },
    { name: "And", value: 45 },
    { name: "The", value: -12 },
    { name: "Magnetic", value: 13 },
    { name: "Zeros", value: 37 }
  ];

  //sort the object by value

  items.sort(function(a, b) {
    return a.value - b.value;
  });

  for (var i = 0; i < items.length; i++) {
    document.getElementById("demo").innerHTML =
      items[i].name + items[i].value;
  }
</script>

输出是And45,但是我想要的结果是按值显示对象。 任何建议,我们将不胜感激!

1 个答案:

答案 0 :(得分:1)

摆脱for循环,仅使用映射并联接即可将这些项转换为字符串表示形式(如果您要这样做的话):

var items = [
    { name: "Edward", value: 21 },
    { name: "Sharpe", value: 37 },
    { name: "And", value: 45 },
    { name: "The", value: -12 },
    { name: "Magnetic", value: 13 },
    { name: "Zeros", value: 37 }
  ];

  //sort the object by value

  items.sort(function(a, b) {
    return a.value - b.value;
  });

  document.getElementById("demo").innerHTML = items.map(o => `${o.name}: ${o.value}`).join('<br>');
<p id="demo">
  depending on what you clicked I will appear or hide.
</p>

您的排序没有任何问题,您只是重新分配了html几次,以排序数组中的最后一个值结尾。