我有一个包含在数组中的Id列表:
var listId: string[] = [];
var newId: boolean;
for (let i in data.chunk) {
listId.push(data.chunk[i].aliases[0]);
}
然后我想用这整个列表测试我的新Id。如果我的新Id在列表中,我想返回false,如果没有返回true。
for(let i of listId) {
if(member.userId !== listId[i]) {
newid = true;
}
else {
newId = false;
}
}
我看不出怎么做..我提议的解决方案不起作用
答案 0 :(得分:2)
不确定return false
in else,在for-loop 之外执行,一旦确定项目已处理完毕。
for(let i of listId) {
if(member.userId !== listId[i]) {
return true;
}
}
return false;
否则,除非第一项检查return true
,否则您的方法将始终return false
而不检查其余项目,因为它没有机会进行迭代并处理休息的项目。
是的,但我需要一个返回true或false的变量boolean。喜欢newId 因为在我这样做之后
if(member.userId !== userId && newId) { ... }
使用标记
var flag = false;
for(let i of listId) {
if(member.userId !== listId[i]) {
flag = true;
break;
}
}
return flag;
答案 1 :(得分:2)
试试这个
if(listId.indexOf(member.userId) !== -1)
{
newId = false;
}else
{
newid = true;
}
答案 2 :(得分:0)
这也会起作用
return !listId.some(id => member.userId === id);
答案 3 :(得分:0)
public listId: string[] = [];
for(let i of this.listId) {
if(member.userId !== this.listId[i]) {
newid = true;
}
else {
newId = false;
}
}
您的数组无法访问foreach循环外部。您需要此运算符才能访问整个值。希望你能帮忙。