Сортировка массива объектов JavaScript по свойству

Если столбец, который вы не хотели выбирать, содержал в нем огромное количество данных, и вы не хотели его включать из-за проблем с производительностью, и вы часто выбираете другие столбцы, я бы предложил вам создать новую таблицу с одним полем, которое обычно не выбирается с помощью ключа к исходной таблице и удаляет поле из исходной таблицы. Присоединитесь к таблицам, когда это дополнительное поле действительно требуется.

1190
задан 19 revs, 10 users 22%TomHankers 22 March 2019 в 16:28
поделиться

6 ответов

Сортировка домов по цене в порядке возрастания:

homes.sort(function(a, b) {
    return parseFloat(a.price) - parseFloat(b.price);
});

Или после версии ES6:

homes.sort((a, b) => parseFloat(a.price) - parseFloat(b.price));

Некоторую документацию можно найти здесь .

1586
ответ дан 19 December 2019 в 20:14
поделиться

Простой код:

    var homes = [
        {
            "h_id": "3",
            "city": "Dallas",
            "state": "TX",
            "zip": "75201",
            "price": "162500"
        }, {
            "h_id": "4",
            "city": "Bevery Hills",
            "state": "CA",
            "zip": "90210",
            "price": "319250"
        }, {
            "h_id": "5",
            "city": "New York",
            "state": "NY",
            "zip": "00010",
            "price": "962500"
        }
    ];

    let sortByPrice = homes.sort(function (a, b) 
    {
      return parseFloat(b.price) - parseFloat(a.price);
    });

    for (var i=0; i<sortByPrice.length; i++)
    {
      document.write(sortByPrice[i].h_id+' '+sortByPrice[i].city+' '
       +sortByPrice[i].state+' '
       +sortByPrice[i].zip+' '+sortByPrice[i].price);
      document.write("<br>");
    }
0
ответ дан 19 December 2019 в 20:14
поделиться

Вы можете использовать метод JavaScript sort с функцией обратного вызова:

function compareASC(homeA, homeB)
{
    return parseFloat(homeA.price) - parseFloat(homeB.price);
}

function compareDESC(homeA, homeB)
{
    return parseFloat(homeB.price) - parseFloat(homeA.price);
}

// Sort ASC
homes.sort(compareASC);

// Sort DESC
homes.sort(compareDESC);
4
ответ дан 19 December 2019 в 20:14
поделиться

Вы хотите отсортировать это в Javascript, верно? Вам нужна функция sort () . В этом случае вам нужно написать функцию компаратора и передать ее в sort () , примерно так:

function comparator(a, b) {
    return parseInt(a["price"], 10) - parseInt(b["price"], 10);
}

var json = { "homes": [ /* your previous data */ ] };
console.log(json["homes"].sort(comparator));

Ваш компаратор берет по одному из каждого вложенного хэша внутри массива и решает, какой из них является выше, проверив поле «цена».

22
ответ дан 19 December 2019 в 20:14
поделиться

Для сортировки вам нужно создать функцию компаратора, принимающую два аргумента. Затем вызовите функцию сортировки с этой функцией компаратора следующим образом:

132
ответ дан 19 December 2019 в 20:14
поделиться

Вот более гибкая версия, которая позволяет создавать многоразовые функции сортировки и сортировки по любому полю.

 const sort_by = (field, reverse, primer) => {const key = primer? function (x) {return primer (x [field])}: function (x) {return x [field]}; обратный =! обратный? 1: -1; return function (a, b) {return a = key (a), b = key (b), reverse * ((a> b) - (b> a)); возврат }} // Теперь можно произвольно сортировать по любому полю ... const homes = [{h_id: "3", city: "Dallas", state: "TX", zip: "75201", price: "162500" }, {h_id: "4", город: "Бевери-Хиллз", штат: "Калифорния", почтовый индекс: "90210", цена: "319250"}, {h_id: "5", город: "Нью-Йорк", штат : "NY", zip: "00010", цена: "962500"}]; // Сортировать по цене от высокой к низкой console.log (homes.sort (sort_by ('price', true, parseInt))); // Сортировка по городу, без учета регистра, AZ console.log (homes.sort (sort_by ('city', false, (a) => a.toUpperCase ()))); 
663
ответ дан 19 December 2019 в 20:14
поделиться
Другие вопросы по тегам:

Похожие вопросы: