通过比较项目组的JavaScript数组项

问题描述 投票:-3回答:1

我有一个这样的数组:

var oArr = [
  { id: "d1", x: 2, y: 2 },
  { id: "d1", x: 3, y: 3 },
  { id: "d1", x: 5, y: 3 },
  { id: "d1", x: 5, y: 7 },
  { id: "d1", x: 3, y: 6 },

];

我想减去所有y特性彼此和测试如果小于,则给出阈值。

而在嵌套阵列终于项目组...

var threshold =2;

所以我的预期成果是:

var result= [
 [ { id: "d1", x: 2, y: 2 },{ id: "d1", x: 3, y: 3 }, { id: "d1", x: 5, y: 3 }],
  [ { id: "d1", x: 5, y: 7 }, { id: "d1", x: 3, y: 6 }]

];

任何建议或意见,将不胜感激。

javascript arrays
1个回答
1
投票

你可以减少阵列和检查增量不大于给定的threshold

这种解决方案需要一个排序后的数组。

var array = [{ id: "d1", x: 2, y: 2 }, { id: "d1", x: 3, y: 3 }, { id: "d1", x: 5, y: 3 }, { id: "d1", x: 5, y: 7 }, { id: "d1", x: 3, y: 6 }],
    threshold = 2,
    result = array
        .sort(({ y: a }, { y: b }) => a - b)
        .reduce((r, o, i, a) => {
            if (!i || o.y - a[i - 1].y > threshold) {
                r.push([]);
            }
            r[r.length - 1].push(o);
            return r;
        }, []);

console.log(result);
© www.soinside.com 2019 - 2024. All rights reserved.