Сортировка в данный момент сортирует по другим параметрам.Как отсортировать в соответствии с одним конкретным параметром в JavaScript? - PullRequest
0 голосов
/ 20 декабря 2018

При сортировке массива по параметру он сортируется в зависимости от другого параметра.Я хотел бы игнорировать параметр и сортировать в соответствии с моим параметром точно.

Я создал вспомогательную функцию, которая сортирует мой массив по моему параметру, и он работает следующим образом:

Например, у меня есть имя и цена, и мой массив выглядит так

[{name: "A", цена: 5}, {name: "A", цена: 70}, {name: "A", цена: 12}, {name: "A", цена: 576}, {имя: "C", цена: 300}. {имя: "C", цена: 899}, {имя: "B", цена: 12}, {имя: "B", цена: 40}, {имя: "B", цена: 15}]

После сортировки по цене я получаю: [{name: "A", цена: 576}, {name: "A", цена: 70}, {имя: "A", цена: 12}, {имя: "A", цена: 5}, {имя: "C", цена: 899}. {имя: "C", цена: 300}, {имя:"B", цена: 40}, {имя: "15", цена: 12}, {имя: "B", цена: 8}]

Я хотел бы, чтобы оно игнорировало имя и простосортировать по цене ... 899,576,300,70 ...

Это вспомогательная функция, которая сортирует по выбранному параметру:

const propComparator = (propName) =>
    (a, b) => a[propName] == b[propName] ? 0 : a[propName] < b[propName] ? -1 : 1

Я добавляю элементы внабор, затем после пары циклов for, которые добавляют элементы в набор, я превращаю его в массив и сортируювот так:

let topArray = Array.from(topSet).sort(propComparator('price'));

1 Ответ

0 голосов
/ 20 декабря 2018

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

var topSet = [
    { name: "A", price: 5 },
    { name: "A", price: 70 },
    { name: "A", price: 12 },
    { name: "A", price: 576 },
    { name: "C", price: 300 },
    { name: "C", price: 899 },
    { name: "B", price: 12 },
    { name: "B", price: 40 },
    { name: "B", price: 15 }
];
var propComparator = function (propName) {
    return function (a, b) {
        return a[propName] == b[propName] ? 0 : a[propName] < b[propName] ? -1 : 1;
    };
};
var topArray = Array.from(topSet).sort(propComparator('price'));

console.log(topArray.map(function (a) { return JSON.stringify(a); }).join(",\n"));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...