[英]Find max and min from a object in javascript only
嗨,我有一個如下所示的數組....
dataArray(7)[
{dataIndex: 0, specialEventID: 65268}
1
:
{dataIndex: 1, specialEventID: 65268}
2
:
{dataIndex: 1, specialEventID: 65271}
3
:
{dataIndex: 1, specialEventID: 65272}
4
:
{dataIndex: 2, specialEventID: 65270}
5
:
{dataIndex: 5, specialEventID: 65269}
6
:
{dataIndex: 6, specialEventID: 65269}
]
現在我想要每個 specialEventID 的最大和最小索引,例如 65268['max':1, 'min':0]
65271['max':1, 'min':1] //because only one object for 65271
65272['max':1, 'min':1] //because only one object for 65272
65270['max':2, 'min':2]//because only one object for 65270
65270['max':5, 'min':6]
任何人都可以幫我找到上面的最大和最小索引嗎? 提前致謝。
您可以為結果獲取一個對象,其中specialEventID
充當鍵和一個用於最小值和最大值的對象。
var data = [{ dataIndex: 0, specialEventID: 65268 }, { dataIndex: 1, specialEventID: 65268 }, { dataIndex: 1, specialEventID: 65271 }, { dataIndex: 1, specialEventID: 65272 }, { dataIndex: 2, specialEventID: 65270 }, { dataIndex: 5, specialEventID: 65269 }, { dataIndex: 6, specialEventID: 65269 }], result = {}; data.forEach(function (o) { if (!result[o.specialEventID]) { result[o.specialEventID] = { min: o.dataIndex, max: o.dataIndex }; return; } if (result[o.specialEventID].min > o.dataIndex) { result[o.specialEventID].min = o.dataIndex; return; } if (result[o.specialEventID].max < o.dataIndex) { result[o.specialEventID].max = o.dataIndex; } }); console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }
const dataArray = [ {dataIndex: 0, specialEventID: 65268}, {dataIndex: 1, specialEventID: 65268}, {dataIndex: 1, specialEventID: 65271}, {dataIndex: 1, specialEventID: 65272}, {dataIndex: 2, specialEventID: 65270}, {dataIndex: 5, specialEventID: 65269}, {dataIndex: 6, specialEventID: 65269} ]; const ret = dataArray.reduce((a,v) => { var k = v.specialEventID; a[k] = a[k] ? { min: Math.min(a[k].max, v. dataIndex), max: Math.max(a[k].max, v. dataIndex) } : { min: v.dataIndex, max: v.dataIndex}; return a; }, {}); console.log(ret);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.