有没有一种优雅的方法来处理潜在数组元素与对象值的比较



我有一个游戏,参赛者随机获得两张照片。图片可以是红色或蓝色,目标是选择任何红色图片并提交投票。当他们投票时,他们选择的任何红色图片都应该得到一分,没有选择的任何蓝色图片都应该获得一分。

每个图像都有一个文件名和颜色的属性,如下所示:

<div id="box1" class="selectItem" data-filename="image1.png" data-color="red">

当参赛者选择一个或多个图像时,文件名和颜色会被推入一个隐藏的数组中,看起来可能是这样的:

CCD_ 2,但也可以看起来像这样:CCD_ 3或也可以是空的。

我有一个对象,它保存有关当前正在显示的图像的信息。它是这样构建的:

const image1 = $('box1').attr('data-filename');
const color1 = $('box1').attr('data-color');
const image2 = $('box2').attr('data-filename');
const color2 = $('box2').attr('data-color');
const obj = {};
obj[image1] = color1;
obj[image2] = color2;

所以,这个物体看起来可能是这样的:

{
['image1.png']: 'red',
['image2.png']: 'blue'
}

所有获得的分数都会被添加到会话存储中的分数中。

将用户的选择(数组(与显示的图像(对象(进行比较的最优雅方法是什么:

  1. 选择任何红色图像即可获得一分
  2. 未选中的任何蓝色图像可获得一分

我刚刚做了这个:

for (let [key, value] of Object.entries(obj)) { 
if (key === array[0]) {
if (value === 'red') {
// update my score
}
} else if (key !== array[0]) {
if (value === 'blue') {
// update my score
}
}
}

最新更新