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

Javascript 使用字符串列表测试字符串,javascript,arrays,list,typescript,Javascript,Arrays,List,Typescript,我有一个数组中包含的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]) {

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

我不知道怎么做。。我建议的解决方案不起作用

请不要
在else中返回false
在for loop外部执行,一旦您确定项目已处理完毕

for(let i of listId) {
    if(member.userId !== listId[i]) {
      return true;
    }
  }
return false;
否则,除非第一个项的检查
返回true
,否则您的方法将始终
返回false
,而不检查其余项,因为它没有机会迭代和处理其余项


是的,但我需要一个返回true或false的布尔变量。像纽伊德 因为在我这样做之后,
if(member.userId!==userId&&newId){…}

使用标志

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

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

return !listId.some(id => member.userId === id);

您的阵列无法访问foreach循环外部。您需要此运算符才能访问整个值。希望您能提供帮助。

尝试过使用调试器吗?是的,但我需要一个返回true或false的布尔变量。喜欢
newId
,因为在我这样做之后
if(member.userId!==userId&&newId){…}
@Floriane不确定为什么需要一个标志,但检查更新。是的,但我需要一个返回true或false的变量布尔值。像
newId
因为在我这样做之后
如果(member.userId!==userId&&newId){…}
那么,你就可以这样做了:var newId=!一些(id=>member.userId==id);
public listId: string[] = [];

for(let i of this.listId) {
    if(member.userId !== this.listId[i]) {
      newid = true;
    }
    else {
      newId = false;
    }
  }