我有一个对象数组,其中包含连续整数数组和一个整数值:
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对象。 它包含levelnumbers
和levelNumbers
,两者都不一样。
第二 - 与其使用contains
include
,contains
是什么?
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
。