[英]Sorting multiple objects in JavaScript
如何對包含數字和其他信息的對象進行排序?
我有2個物件。 點贊也與信息對象鏈接。 Likesobject包含隨機數,而視圖名稱將與Likesobject相關。 接下來的事情是,如果有新名稱傳入,則會越來越多地添加viewname。因此,它不會只是停留在d:link d
例
var viewnames = {
'a': 'link a',
'b': 'link b',
'c': 'link c',
'd': 'link d'
};
var Likeobject = {
'a': 6,
'b': 1,
'c': 9,
'd': 8
};
例,
name1 -> 2 likes
name2 -> 5 likes
name3 -> 10 likes
name4 -> 8 likes
name5 -> 12 likes`
從最高到最低排序之后,
name5 -> 12 likes
name3 -> 10 likes
name4 -> 8 likes
name2 -> 5 likes
name1 -> 2 likes
var obj1 = [{numLikes: likesobject},{viewerName: viewnames}];
我不確定我編寫對象的方式是否正確。 如果我錯了,請糾正我。 希望能解決我的問題。
使用array.sort
var myArray = [
{"numLikes": 2, "viewerName": "name1"},
{"numLikes": 5, "viewerName": "name2"},
{"numLikes": 10, "viewerName": "name3"},
{"numLikes": 8, "viewerName": "name4"},
{"numLikes": 12, "viewerName": "name5"}
];
printArray();
sortArray();
printArray();
myArray.push({"numLikes" : 17, "viewerName" : "name6"}); // add another object to the array
myArray.push({"numLikes" : 1, "viewerName" : "name7"}); // add another object to the array
printArray();
sortArray();
printArray();
changeNumLikes("name1", 7);
printArray();
sortArray();
printArray();
function sortArray() {
myArray.sort(function(a, b){
return a.numLikes-b.numLikes;
});
}
function printArray() {
for (let i = 0; i < myArray.length; i++) {
document.write("<span>" + myArray[i].viewerName + " : " + myArray[i].numLikes + "</span><br/>");
}
document.write("<br/>");
}
function changeNumLikes(viewerName, numLikes) {
let object;
for (let i = 0; i < myArray.length; i++) {
if (myArray[i].viewerName === viewerName) {
object = myArray[i];
break;
}
}
if (object && object.numLikes) {
object.numLikes = numLikes;
}
}
如何對包含數字和其他信息的對象進行排序?
您不對對象進行排序。
為什么,因為對象是屬性的無序集合 。
我猜您想按對象屬性對對象數組進行排序,因此請參見https://developer.mozilla.org/de/docs/Web/JavaScript/Reference/Global_Objects/Array/sort ,可以為其提供比較功能。
實物示例將很有用。
您可以在數組中獲得要排序的鍵,按喜歡的降序進行排序,並使用keys數組生成已排序結果的列表。
此解決方案使用Array#sort
。
var viewNames = { a: 'link a', b: 'link b', c: 'link c', d: 'link d' }, likes = { a: 6, b: 1, c: 9, d: 8 }, keys = Object .keys(likes) .sort((a, b) => likes[b] - likes[a]); keys.forEach(key => console.log(key, viewNames[key], likes[key]));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.