<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,但是我想要的结果是按值显示对象。 任何建议,我们将不胜感激!
答案 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几次,以排序数组中的最后一个值结尾。