使用字符串列表测试字符串



我有一个数组中包含的 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;
    }
  }

我不知道该怎么做.我提出的解决方案不起作用

试试这个

    if(listId.indexOf(member.userId) !== -1)
     {
      newId = false; 
     }else
      {
       newid = true;
      }

不要在其他return false,一旦确定项目已处理,就可以在 for 循环之外进行

for(let i of listId) {
    if(member.userId !== listId[i]) {
      return true;
    }
  }
return false;
否则

,除非第一项的检查return true,否则您的方法将始终return false而不检查其余项,因为它没有机会迭代和处理其余项。

是的,

但我需要一个返回真或假的变量布尔值。喜欢新ID 因为在我做完之后if(member.userId !== userId && newId) { ... }

使用标志

var flag = false;
for(let i of listId) {
    if(member.userId !== listId[i]) {
      flag = true;
      break;
    }
  }
return flag;

这也行得通

return !listId.some(id => member.userId === id);
public listId: string[] = [];
for(let i of this.listId) {
    if(member.userId !== this.listId[i]) {
      newid = true;
    }
    else {
      newId = false;
    }
  }

您的数组未在 foreach 循环外部访问。您需要此运算符来访问整个值。希望对您有所帮助。