gpt4 book ai didi

javascript - 获取数组的每四分之一并检查

转载 作者:行者123 更新时间:2023-11-29 16:31:28 25 4
gpt4 key购买 nike

我有这样的数组:

let arr = [ 
{ x: 31, y: 8 }, // get 1
{ x: 32, y: 8, monster: { is: true, id: '19216' } }, // get special
{ x: 32, y: 9 },
{ x: 32, y: 10 },
{ x: 32, y: 11 }, // get 4
{ x: 32, y: 12 },
{ x: 32, y: 13 },
{ x: 32, y: 14 },
{ x: 32, y: 15 }, // get 8
{ x: 32, y: 16 } // get last
];

我想要实现的是获得每四个,获得特殊的一个(带有怪物对象的那个)以及最后一个。所以输出将是

[
{x: 31, y: 8},
{x: 32, y: 8, monster: { is: true, id: '19216' } },
{x: 32, y: 11},
{x: 32, y: 15},
{x: 32, y: 16}
]

很容易得到第四个和最后一个,如下所示:

let arrThinned = [];

for (let i = 0; i < arr.length; i = i + 4) {
arrThinned.push({
x: arr[i].x,
y: arr[i].y,
});
}
if((arr.length - 1) % 4 !== 0) {
/* add also last one if not already added */
arrThinned.push({
x: arr[arr.length - 1].x,
y: arr[arr.length - 1].y
});
};

但我不知道如何另外检查是否每隔四个有一个特殊的beetwen并将其添加到thinnedArr数组中。我需要保留顺序。 Demo上面的代码。

最佳答案

这里,使用过滤器

let arr = [ 
{ x: 31, y: 8 }, // get 1
{ x: 32, y: 8, monster: { is: true, id: '19216' } }, // get special
{ x: 32, y: 9 },
{ x: 32, y: 10 },
{ x: 32, y: 11 }, // get 4
{ x: 32, y: 12 },
{ x: 32, y: 13 },
{ x: 32, y: 14 },
{ x: 32, y: 15 }, // get 8
{ x: 32, y: 16 } // get last
];

let newArr = arr.filter((e,i,ar) => (i%4 === 0 || e.monster || i===ar.length-1));

console.log(newArr);

关于javascript - 获取数组的每四分之一并检查,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56266301/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com