我有这个对象数组:
[
{x: 615, y: 293, a: 1},
{x: 340, y: 439, a: 0},
{x: 292, y: 505, a: 0}
]
基本上我试图写一个对撞机。我希望返回x和y值彼此相等的对象索引,我该如何处理?
答案 0 :(得分:0)
你可以编写一个函数,通过map迭代数组,并根据这个条件(x === y)返回索引或null,然后过滤它,只返回那些与null不同的函数
const collider = array =>
array.map( (item, index) => item.x === item.y ? index : null )
.filter( item => item !== null)
答案 1 :(得分:0)
var indexes = myArray.reduce((idxs, el, i) => {
if (el.x === el.y) {
return idxs.concat(i);
} else {
return idxs;
}
}, []);
如果您的myArray
将是,例如:
myArray = [
{x: 615, y: 293, a: 1},
{x: 340, y: 340, a: 0},
{x: 292, y: 505, a: 0}
]
然后你得到[1]
作为结果(因为索引1
的元素有x===y
)
答案 2 :(得分:0)
您可以使用哈希表来检查重复项:
const hash = {};
for(const {x, y} of array) {
if(hash[x + "|" + y])
alert("collides");
hash[x + "|" + y] = true;
}