gpt4 book ai didi

javascript - 如何在 JavaScript 中检查多个对象属性两次?

转载 作者:行者123 更新时间:2023-11-30 00:33:22 24 4
gpt4 key购买 nike

有很多不错的函数比如filter(), hasOwnProperty() or indexOf(), 但我不知道在我的问题中如何处理它们。

首先,让我向您展示我当前的代码:

var Lines = [];

// [..] pushing a lot of objects in the Lines Array, now it is like this:
Lines[0] = {line: 'a', x: 2, y: 4, z: 3, visible: true}
Lines[1] = {line: 'b', x: 3, y: 4, z: 3, visible: true}
Lines[2] = {line: 'c', x: 5, y: 3, z: 3, visible: true}
Lines[3] = {line: 'd', x: 1, y: 4, z: 3, visible: true}
Lines[4] = {line: 'e', x: 2, y: 4, z: 3, visible: true}//same as Lines[0]
Lines[5] = {line: 'f', x: 6, y: 6, z: 3, visible: true}
Lines[6] = {line: 'g', x: 5, y: 7, z: 3, visible: true}
Lines[7] = {line: 'h', x: 3, y: 4, z: 3, visible: true}//same as Lines[1]
//..

现在我想要一个函数,我可以在 x 和 y 相同的地方多行。 (在示例中,index 0 & 4 相同,7 和 1 相同)如果在相同的 x & y 位置有两行,则将 visible 设置为 false,否则设置可见为真。

现在的问题是:如何检查数组中的多个对象属性(x 和 y 必须相同)并处理它们?

最佳答案

var index = {},
lines = [/* your lines here */];

lines.forEach(function (line) {
var key = line.x + ':' + line.y;
line.visible = !(key in index);
index[key] = true;
});
  1. 创建一个索引(一个对象),其中将包含您要检查其唯一性的属性。
  2. 在您的情况下,xy 的组合将是唯一属性(即 key)。我们可以为此使用一个单独的字符串:line.x + ':' + line.y。注意使用不能自然出现在 xy 中的分隔符,冒号可以很好地表示数字。
  3. 逐行检查它们的 key 是否已经在索引中。如果是,让它们不可见,反之亦然。
  4. 将键存储在索引中,重复。

关于javascript - 如何在 JavaScript 中检查多个对象属性两次?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28316341/

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