簡體   English   中英

Javascript - 在對象的 arrays 的 object 中找到最高值

[英]Javascript - find highest value in an object of arrays of objects

我有一個包含 arrays 對象的 object。 我試圖找到 object 屬性“sortOrder”的最大值,而無需手動遍歷 arrays 和對象。

所以我的變量如下所示:

const myObj = {
 people: [
   0: {firstname: 'Dave', lastName: 'Jones', sortOrder: 22},
   1: {firstname: 'Jane', lastName: 'Smith', sortOrder: 11}
 ],
 otherPeople: [
   0: {firstname: 'Jen', lastName: 'SomeLastName', sortOrder: 33},
   1: {firstname: 'ExampleFirstName', lastName: 'ExampleLastName', sortOrder: 12}
 ]
};

所以我會嘗試遍歷這個最終找到,在這種情況下,最高的 sortOrder 33。不一定是數組索引或包含它的 object,只是數字。

謝謝

 const myObj = { people: [ {firstname: 'Dave', lastName: 'Jones', sortOrder: 22}, {firstname: 'Jane', lastName: 'Smith', sortOrder: 11} ], otherPeople: [ {firstname: 'Jen', lastName: 'SomeLastName', sortOrder: 33}, {firstname: 'ExampleFirstName', lastName: 'ExampleLastName', sortOrder: 12} ] }; const maxSortOrder = Object.values(myObj).reduce((max, arr) => { arr.forEach(({ sortOrder }) => { if(sortOrder > max) { max = sortOrder; } }); return max; }, 0); console.log(maxSortOrder);

(我不得不稍微更正您的輸入數據:arrays 不包括您顯示的索引號。)

最簡單的方法是將 object 中的兩個 arrays 合並為一個列表,然后使用reduce找到最大值:

 const myObj = { people: [ { firstname: 'Dave', lastName: 'Jones', sortOrder: 22 }, { firstname: 'Jane', lastName: 'Smith', sortOrder: 11 } ], otherPeople: [ { firstname: 'Jen', lastName: 'SomeLastName', sortOrder: 33 }, { firstname: 'ExampleFirstName', lastName: 'ExampleLastName', sortOrder: 12 } ] }; let allPeople = [...myObj.people, ...myObj.otherPeople]; let max = allPeople.reduce((maxSort, person) => { return Math.max(maxSort, person.sortOrder) }, 0)); console.log(max)

您可以按最高的 sortOrder 對它們進行排序,然后在每個數組中取最高元素中的較高者:

 const myObj = { people: [{ firstname: 'Dave', lastName: 'Jones', sortOrder: 22 }, { firstname: 'Jane', lastName: 'Smith', sortOrder: 11 } ], otherPeople: [{ firstname: 'Jen', lastName: 'SomeLastName', sortOrder: 33 }, { firstname: 'ExampleFirstName', lastName: 'ExampleLastName', sortOrder: 12 } ] }; Object.values(myObj).forEach(peopleArray => { peopleArray.sort((a, b) => b.sortOrder - a.sortOrder) }) let maxValue = Math.max(myObj.people[0].sortOrder, myObj.otherPeople[0].sortOrder) console.log(maxValue)

const myObj = {
people: [
    {firstname: 'Dave', lastName: 'Jones', sortOrder: 22},
    {firstname: 'Jane', lastName: 'Smith', sortOrder: 11}
],
otherPeople: [
    {firstname: 'Jen', lastName: 'SomeLastName', sortOrder: 33},
    {firstname: 'ExampleFirstName', lastName: 'ExampleLastName', sortOrder: 12}
]};

let maxSortOrder = 0;
for (const value of Object.values(myObj)) {
    maxSortOrder = value.reduce((acc, { sortOrder }) => sortOrder > acc ? sortOrder : acc, maxSortOrder);
};

console.log(maxSortOrder); //33

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM