(Javascript)确定对象数组中是否包含数字值或小于数字值的数字



我有一个对象数组,其中包含连续整数数组和一个整数值:

const worlds = [
{levelnumbers: [0,1,2,3,4,5]},
{levelnumbers: [6,7,8,9,10]},
{levelnumbers: [11,12,13,14]}];
const reachedLevel = 9;

我想确定每个世界对象中是否包含reachedLevel或低于该值的值,并为每个对象设置一个锁定值。

我试过这个:

worlds.forEach(world => {
world.locked = !world.levelnumbers.includes(reachedLevel);
}
);

但是是"锁定"所有世界,除了包含实际达到水平的世界。我希望世界[0]已锁定设置为假,即使水平达到是例如。10.

您可以查看最小的数字并检查您的值。

const
worlds = [{ levelNumbers: [0, 1, 2, 3, 4, 5] }, { levelNumbers: [6, 7, 8, 9, 10] }, { levelNumbers: [11, 12, 13, 14] }],
reachedLevel = 9;
worlds.forEach(world => world.locked = Math.min(...world.levelNumbers) > reachedLevel);
console.log(worlds);
.as-console-wrapper { max-height: 100% !important; top: 0; }

您可以使用Array#every检查所有级别编号是否大于达到的水平,并将结果分配给locked参数。

const worlds = [
{levelNumbers: [0,1,2,3,4,5]},
{levelNumbers: [6,7,8,9,10]},
{levelNumbers: [11,12,13,14]}
];
const reachedLevel = 9;
worlds.forEach(world => 
world.locked = world.levelNumbers.every(n => n > reachedLevel) 
)
console.log(worlds);

首先,检查你的javascript对象。 它包含levelnumberslevelNumbers,两者都不一样。

第二 - 与其使用containsincludecontains是什么?

const worlds = [
{levelnumbers: [0,1,2,3,4,5]},
{levelnumbers: [6,7,8,9,10]},
{levelnumbers: [11,12,13,14]}];
const reachedLevel = 9;
worlds.forEach(world => {
world.locked = world.levelnumbers.includes(reachedLevel)
}
);
console.log(worlds);

您在键名称中有拼写错误,前 2 个元素使用levelnumbers但是,最后一个是levelNumbers.此外,javascript 没有contains函数,而是使用indexOf如果元素不存在,则返回-1

最新更新