javascript - 单独循环并一次打印所有对象时的不同顺序
问题描述
我有一个响应对象,它有一个键标签,其值为 json。我正在尝试根据键对 json 进行排序,然后遍历列表并将对象推送到反应列表。我看到当我单独打印时,它们按预期出现,但是当我整体打印时,它们的顺序不同。
sortTags: function (response) {
tagss = []
response.tags.sort((a, b) => a.disp_id - b.disp_id).map(function(tag) {
console.log(tag)
tagss.push(tag)
});
console.log(tagss)
return tagss;
}
我看到当我这样做时console.log(tag)
,它按预期的顺序打印。但是console.log(tagss)
以不同的顺序打印。
这个问题可能很幼稚。请帮忙。先感谢您。
解决方案
你不需map
要这样做。sort
将返回一个新创建的排序数组。您只需tags
使用扩展运算符克隆数组...
,然后返回排序结果return response.tags.sort((a, b) => a.disp_id - b.disp_id)
。
运行代码片段以查看它的实际效果
const resp = {
tags: [{
name: "Nikos",
disp_id: 45,
}, {
name: "Giorgos",
disp_id: 25,
}, {
name: "Adreas",
disp_id: 21,
}, {
name: "Maria",
disp_id: 67,
}, {
name: "Panos",
disp_id: 19,
}]
};
const Sorter = {
sortTags: function(response) {
return [...response.tags].sort((a, b) => a.disp_id - b.disp_id);
}
}
document.getElementById('result').textContent = JSON.stringify(
Sorter.sortTags(resp)
, null, 2);
<pre id="result"></pre>
推荐阅读
- python - Pyomo(v5.2)python(v3.7)脚本解决具体模型抛出ValueError:未定义目标;无法写入合法的 LP 文件
- c - 变量未更新,While 循环不起作用
- android - 屏幕截图另存为空白图像 [Android]
- sql - AngularJS 不接收 socket.io 发出的新数据
- sql - 在 SQL 上,做公式的最佳方法是什么?
- exchangewebservices - 日历委派的 EWS 通知
- import - 在 SAS 中组合具有不同列的 Excel 表
- javascript - 父状态更新时反应父组件重置子组件状态
- jquery - 单选题 - 预填其他答案文本
- ruby-on-rails - 为什么 Rubymine 不能识别我命名空间继承的控制器?