首页 > 解决方案 > 单独循环并一次打印所有对象时的不同顺序

问题描述

我有一个响应对象,它有一个键标签,其值为 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)以不同的顺序打印。

这个问题可能很幼稚。请帮忙。先感谢您。

标签: javascriptreactjs

解决方案


你不需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>


推荐阅读