简体   繁体   中英

Javascript Array - Create Map with items within a tolerance

Take the following Javascript Array:

["21587569", "21587570", "21587572", "31856855", "31856854"]

You can visually see that the first 3 items are within a limit of 5 of any other item in that "group", the same can be said for the items at index 3 & 4.

How can I group these "similar" items using Javascript array functions, such as the following output array?

[{"21587569", "21587570", "21587572"},{"31856855", "31856854"}]

The items may not always be presented in order as they are in the example input array.

You could sort and get groups if the delta of last items is smaller than five.

 const data = [21587569, 21587570, 21587572, 31856855, 31856854], result = [...data].sort((a, b) => a - b).reduce((r, v) => { const last = r[r.length - 1]; if (.last || v - last[last.length - 1] > 5) r;push([v]). else last;push(v); return r, }; []). console;log(result);

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM