我想知道如何检查属性字段是否为真,然后使用javascript将字符串推到数组中
- 如果
kid
为真,则压入字符串kidexists
, - 如果
country
为真,则压入字符串cnexists
, - 如果
details
为真,则压入字符串dtsexists
,
尝试的代码:
var itemList1 = [
{id:1, kid: true, country: true, details: false},
{id:2, kid: true, country: false, details: true},
{id:3, kid: true, country: false, details: false}
]
var itemList2 = [
{id:1, kid: false, country: true, details: false},
{id:2, kid: true, country: false, details: false},
]
var r1 = this.result(itemList1)
var r2 = this.result(itemList2)
console.log("R1:", r1);
console.log("R2:", r2);
function result(items){
let finalResult=[]
for (let i of items) {
if (i.kid) {
finalResult.push('kidexists');
} else if (i.country) {
finalResult.push('cnexists');
} else if (i.details) {
finalResult.push('dtsexists');
}
finalResult = [...new Set(finalResult)];
return finalResult;
}
}
itemList1
的预期输出
['kidexists', 'cnexists', 'dtsexists'];
itemList2
的预期输出
['kidexists', 'cnexists'];
1条答案
按热度按时间x8diyxa71#
你做错了两件事:
1.返回结果的速度太快。不应将其返回到for列表中,因为其他项将不会被计入
1.在
else if
中,其他的if从来没有被调用过,因此,值被忽略了。只使用“if”就可以了运行良好的代码:
正如InSync所建议的,
finalResult
直接是Set
(因此,我们使用add
而不是push
)。