gpt4 book ai didi

javascript - 如果要从中推送的数组未定义,则将字符串推送到数组

转载 作者:行者123 更新时间:2023-11-30 13:54:42 25 4
gpt4 key购买 nike

我不是编码员,我在修改游戏时会弄乱一些 JavaScript,所以请多多包涵。该游戏支持 es5/Chromium 28 支持的所有内容。

我有代码将一个字符串从一个变量推送到一个数组,当变量未定义时,一个固定的字符串被推送:

       slotsArray.push({
landing_policy: ai.landing_policy || 'no_restriction'
});

设置发生了变化,在设置 ai.landing_policy 的地方它将包含多个值,因此它变成了一个数组。如果未设置,则只需要一个条目。

相同的代码似乎在数组就位的地方不起作用:

        for (var i = 0; i < count; i++) {
slotsArray.push({
landing_policy: ai.landing_policy[i] || 'no_restriction'
});
}

产生错误是因为它试图从一个尚 undefined variable 中检查一个值。我希望这会导致它使用固定值,但显然事实并非如此,它只是失败了。

我已经改变了我对下面完整代码的处理方式:

      if (Array.isArray(ai.landing_policy)) {
for (var i = 0; i < count; i++) {
slotsArray.push({
landing_policy: ai.landing_policy[i]
});
}
}
else {
slotsArray.push({
landing_policy: ai.landing_policy || 'no_restriction'
});
}

此代码有效,但我想了解的是这是否是最佳解决方案?旧方法感觉优雅,而新方法看起来有点笨拙。

最佳答案

您可以使用 ternary operator(? :) .

如果第一个为真,它将返回第二个值,否则返回第三个。

我使用 array instanceof Array 而不是 Array.isArray(array) 来支持 ES5。

var isArray = ai.landing_policy instanceof Array
for (var i = 0; i < (isArray ? count : 1); i++) {
slotsArray.push({
landing_policy: isArray ? ai.landing_policy[i] : ai.landing_policy || 'no_restriction'
});
}

关于javascript - 如果要从中推送的数组未定义,则将字符串推送到数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57539850/

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