繁体   English   中英

使用 lodash 按数组列表中的字母排序名称

[英]sortby the name by alphabet in array list using lodash

如何在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。 如果可能的话在 lodash 中它会很好

演示

 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>

按照lodash文档的API sortBy是:

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

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

所以这可能是你想要的:

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

或者

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

_。排序方式()

你的代码应该是这样的:

演示

 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>

 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);

 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>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM