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

时间:2017-11-17 08:50:18

标签: 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]) {
      newid = true;
    }
    else {
      newId = false;
    }
  }

我看不出怎么做..我提议的解决方案不起作用

4 个答案:

答案 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循环外部。您需要此运算符才能访问整个值。希望你能帮忙。