【问题标题】:sortby the name by alphabet in array list using lodash使用 lodash 按数组列表中的字母排序名称
【发布时间】:2018-04-30 10:07:17
【问题描述】:

如何在 javascript 中按字母表对数组列表中的名称进行排序,我尝试使用此代码

const sample = [
    {
        name: "AddMain",
        mesg: "test000"
    },
    {
        name: "Ballside",
        mesg: "test004545"
    },
    {
        name: "TestMain",
        mesg: "test00"
    },
    {
        name: "ball",
        mesg: "test004545"
    },
    {
        name: "Main",
        mesg: "test004545"
    },
    {
        name: "alliswell",
        mesg: "test004545"
    }
]

sample.sort(sortBy('name', false, function(a){return a.toUpperCase()}));

但它在此代码中无法正常工作 sortBy 我正在使用 lodash。如果可能的话,它会很好

【问题讨论】:

  • 如何对数组中的名称进行排序或按名称对数组进行排序?预期的结果是什么?

标签: javascript typescript lodash


【解决方案1】:

演示

const sample = [
    {
        name: "AddMain",
        mesg: "test000"
    },
    {
        name: "Ballside",
        mesg: "test004545"
    },
    {
        name: "TestMain",
        mesg: "test00"
    },
    {
        name: "ball",
        mesg: "test004545"
    },
    {
        name: "Main",
        mesg: "test004545"
    },
    {
        name: "alliswell",
        mesg: "test004545"
    }
];


var chars =_.orderBy(sample, [user => user.name.toLowerCase()], ['asc']);
 
console.log(chars);
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.10/lodash.min.js"></script>

【讨论】:

    【解决方案2】:

    According to the lodash docssortBy的API是:

    _.sortBy(collection, [iteratees=[_.identity]])

    在您的情况下,collection 是您的 sample 数组,您的 [iteratees=[_.identity]] 应该是返回您要排序的键的函数或数组。

    所以这可能就是你想要的:

    _.sortBy(sample, ['name']);

    _.sortBy(sample, function(o){return o.name;}]);

    【讨论】:

      【解决方案3】:

      const sample = [
          {
              name: "AddMain",
              mesg: "test000"
          },
          {
              name: "Ballside",
              mesg: "test004545"
          },
          {
              name: "TestMain",
              mesg: "test00"
          },
          {
              name: "ball",
              mesg: "test004545"
          },
          {
              name: "Main",
              mesg: "test004545"
          },
          {
              name: "alliswell",
              mesg: "test004545"
          }
      ]
      
      var result = sample.slice().sort((a,b) => a.name.localeCompare(b.name, undefined, {numeric: true}));
      console.log(result);

      【讨论】:

        【解决方案4】:

        _.sortBy()

        你的代码应该是这样的:

        演示

        const sample = [{
          name: "AddMain",
          mesg: "test000"
        }, {
          name: "Ballside",
          mesg: "test004545"
        }, {
          name: "TestMain",
          mesg: "test00"
        }, {
          name: "ball",
          mesg: "test004545"
        }, {
          name: "Main",
          mesg: "test004545"
        }, {
          name: "alliswell",
          mesg: "test004545"
        }];
        
        let result = _.sortBy(sample, ({name}) => name.toLowerCase());
        
        console.log(result);
        .as-console-wrapper {max-height: 100% !important;top: 0;}
        <script src="//lodash.com/vendor/cdn.jsdelivr.net/npm/lodash@4.17.10/lodash.min.js"></script>

        【讨论】:

          【解决方案5】:

          const characters = [
            { name: 'Jean-Luc Picard', age: 59 },
            { name: 'William Riker', age: 29 },
            { name: 'Deanna Troi', age: 28 },
            { name: 'Worf', age: 24 }
          ];
          
          // Sort characters by the `age` property
          const sorted = _.sortBy(characters, 'age');
          
          console.log(sorted);
          
          sorted[0].name; // Worf
          sorted[1].name; // Deanna Troi
          sorted[2].name; // William Riker
          sorted[3].name; // Jean-Luc Picard
          <script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.15/lodash.core.js"></script>

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2011-10-13
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2017-01-08
            相关资源
            最近更新 更多