【问题标题】:Sorting in javascript using functions or using underscore使用函数或使用下划线在 javascript 中排序
【发布时间】:2023-04-09 23:09:01
【问题描述】:

我需要对数组进行排序,以便每个对象按名称的字母顺序排序。我需要使用本机函数或下划线库来实现这一点。

这是我的 JSON 数据:

var data = [
    {
        name: "xyz",
        size: "small"
    },
    {
        name: "abc",
        size: "large"
    },
        {
        name: "fcd",
        size: "large"
    },
];

这是我的示例 json 文件。我希望名为 abc 的对象首先出现在数组中。

提前致谢

【问题讨论】:

    标签: javascript arrays function sorting underscore.js


    【解决方案1】:
    var data; // This is your data array
    
    data.sort(function(a, b) {
       if (a.name > b.name) {
          return 1;
       }
       if (a.name < b.name) {
          return -1;
       }
       // a must equal b
       return 0;
    });
    

    参考:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort

    【讨论】:

    • 每次名称 abc 不作为第二个元素出现时..也可能有额外的名称..在这种情况下这不起作用吗?
    • 如果数组的顺序不同或数组有更多对象,此代码仍然有效。只要每个对象都有一个name 属性可供排序,它就可以工作!
    【解决方案2】:

    打开您的控制台并运行此代码以查看它对您的对象进行排序。

    var data = [
      {
        name: "xyz",
        size: "small"
      },
      {
        name: "abc",
        size: "large"
      },
      {
        name: "fcd",
        size: "large"
      },
    ];
        
    console.log(
    data.sort(function(obj1, obj2){ return obj1.name > obj2.name})
    );

    【讨论】:

    • Array.prototype.sort 的比较函数应该返回-101,而不是truefalse
    • 每次名称 abc 不作为第二个元素出现时..也可能有额外的名称..在这种情况下这不起作用吗?
    • 我已经以各种方式对它们进行了加扰,并且始终保持正确(包括添加和删除元素)。 Number(true)Number(false) 转换为 10。如果没有-1 作为选项,排序算法可能会进行更多迭代。但它工作正常。
    猜你喜欢
    • 1970-01-01
    • 2018-05-11
    • 2023-04-04
    • 2013-09-23
    • 2012-05-11
    • 1970-01-01
    • 1970-01-01
    • 2018-01-04
    • 1970-01-01
    相关资源
    最近更新 更多