#javascript #sorting
#javascript #сортировка
Вопрос:
Я хочу отсортировать вложенные ниже данные на основе ключа, у меня есть .sort
функция использования, но я не работаю с вложенными данными, т.е.: sortFunction(data,'poolTimeRemain','desc')
, Пожалуйста, помогите
Обновите данные JSON.
пусть data = [{ «rows»: [{ «poolTimeRemain»: «520 часов», «industry»: «Бизнес и профессиональные услуги», }, { «poolTimeRemain»: «503 часа», «industry»: «Бизнес и профессиональные услуги» } ], «кнопка»:{ «rowspan»: 2, «engIds»: «a2P3B000000BCOPUA4,a2P3B000000BCQ6UAO» } }, { «rows»: [{ «poolTimeRemain»: «420 часов», «industry»: «Бизнес и профессиональные услуги», }, { «poolTimeRemain»: «450 часов», «промышленность»: «Бизнес и профессиональные услуги» } ], «кнопка»: { «rowspan»: 2, «engIds»: «a2p3b000000bccopua4,a2P3B000000BCQ6UAO» } }, { «строки»: [{ «poolTimeRemain»: «600 часов», «отрасль»: «Бизнес и профессиональные услуги», } ], «button»: { «rowspan»: 2, «engIds»: «a2P3B000000BCOPUA4,a2P3B000000BCQ6UAO» } }]
Комментарии:
1. Отредактируйте свой вопрос, пожалуйста, это едва читаемо. Также добавьте сортировку до и после
Ответ №1:
Вам просто нужно получить доступ rows
и использовать .sort
его как обычно
let data = [{
"rows": [{
"title": null,
"role": null,
"relationShip": "Reseller",
"productFamily": "Google Workspace",
"poolTimeRemain": "-520 hours",
"industry": "Business amp; Professional Services",
"engId": "a2P3B000000BCOPUA4",
"country": null,
"annualRevenue": null,
"accountId": "0013B00000foEbOQAU"
}, {
"title": null,
"role": null,
"relationShip": "Reseller",
"productFamily": "Google Workspace",
"poolTimeRemain": "-503 hours",
"industry": "Business amp; Professional Services",
"engId": "a2P3B000000BCQ6UAO",
"country": null,
"annualRevenue": null,
"accountId": "0013B00000foEbOQAU",
"cssclass": "removeTopBorder"
}],
"button": {
"rowspan": 2,
"engIds": "a2P3B000000BCOPUA4,a2P3B000000BCQ6UAO"
}
}]
function sortFunction(input, label, dir) {
if (dir == "asc")
return input[0]["rows"].sort((a,b) => (a[label] > b[label]) ? 1 : ((b[label] > a[label]) ? -1 : 0))
else if (dir == "desc")
return input[0]["rows"].sort((a,b) => (a[label] < b[label]) ? 1 : ((b[label] < a[label]) ? -1 : 0))
}
console.log(sortFunction(data, "poolTimeRemain", "desc"))
Комментарии:
1. Привет @doan, спасибо за ваш ответ, но это приведет к сортировке только подмассива, верно?, я хочу, чтобы первый подмассив сортировался и основывался на 0-м индексе в подмассиве, я хочу отсортировать родительский массив JSON
2. @sarveshkumar можете ли вы предоставить больше примеров / тестовых примеров в своем вопросе? Поскольку, исходя из того, что я видел, «строки» и «кнопка» имеют разную структуру, 1 — это массив, а 1 — json
3. Кроме того, 0-й индекс подмассива является json, вы не можете сравнивать 2 json, только на основе ключа или значения
4. я обновил пример массива json, поэтому ожидаемые данные будут: 600 часов, 520 часов, 503 часа, 450 часов, 420 часов