сортировка имени по алфавиту в списке массивов с использованием lodash - PullRequest
0 голосов
/ 30 апреля 2018

как отсортировать имя в списке массивов по алфавиту в 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()}));

но в этом коде он не работает должным образом. Я использую lodash. если это возможно в lodash это будет штраф

Ответы [ 4 ]

0 голосов
/ 30 апреля 2018

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);
0 голосов
/ 30 апреля 2018

_. SortBy ()

Ваш код должен быть таким:

DEMO

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>
0 голосов
/ 30 апреля 2018

DEMO

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>
0 голосов
/ 30 апреля 2018

Согласно документации lodash API sortBy:

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

В вашем случае collection - это ваш sample массив, а ваш [iteratees=[_.identity]] должен быть функцией или массивом, который возвращает ключ, который вы хотите отсортировать.

Так что это, вероятно, то, что вы хотели:

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

OR

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

...