Если столбец, который вы не хотели выбирать, содержал в нем огромное количество данных, и вы не хотели его включать из-за проблем с производительностью, и вы часто выбираете другие столбцы, я бы предложил вам создать новую таблицу с одним полем, которое обычно не выбирается с помощью ключа к исходной таблице и удаляет поле из исходной таблицы. Присоединитесь к таблицам, когда это дополнительное поле действительно требуется.
Сортировка домов по цене в порядке возрастания:
homes.sort(function(a, b) {
return parseFloat(a.price) - parseFloat(b.price);
});
Или после версии ES6:
homes.sort((a, b) => parseFloat(a.price) - parseFloat(b.price));
Некоторую документацию можно найти здесь .
Простой код:
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>");
}
Вы можете использовать метод 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);
Вы хотите отсортировать это в 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));
Ваш компаратор берет по одному из каждого вложенного хэша внутри массива и решает, какой из них является выше, проверив поле «цена».
Для сортировки вам нужно создать функцию компаратора, принимающую два аргумента. Затем вызовите функцию сортировки с этой функцией компаратора следующим образом:
Вот более гибкая версия, которая позволяет создавать многоразовые функции сортировки и сортировки по любому полю.
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 ())));