关于javascript:如何检查数组中是否包含TypeScript中的字符串?

How do I check whether an array contains a string in TypeScript?

目前我正在使用Angular 2.0。 我有一个数组如下:

1
var channelArray: Array<string> = ['one', 'two', 'three'];

如何在TypeScript中检查channelArray是否包含字符串'three'?


与JavaScript相同,使用Array.prototype.indexOf():

1
console.log(channelArray.indexOf('three') > -1);

或者使用ECMAScript 2016 Array.prototype.includes():

1
console.log(channelArray.includes('three'));

请注意,您还可以使用@Nitzan显示的方法来查找字符串。但是,对于字符串数组,通常不会这样做,而是对于一个对象数组。那些方法更明智。例如

1
2
3
4
const arr = [{foo: 'bar'}, {foo: 'bar'}, {foo: 'baz'}];
console.log(arr.find(e => e.foo === 'bar')); // {foo: 'bar'} (first match)
console.log(arr.some(e => e.foo === 'bar')); // true
console.log(arr.filter(e => e.foo === 'bar')); // [{foo: 'bar'}, {foo: 'bar'}]

参考

Array.find()

Array.some()

Array.filter()


你可以使用一些方法:

1
console.log(channelArray.some(x => x ==="three")); // true

您可以使用find方法:

1
console.log(channelArray.find(x => x ==="three")); // three

或者您可以使用indexOf方法:

1
console.log(channelArray.indexOf("three")); // 2


如果您的代码是基于ES7的:

1
channelArray.includes('three'); //will return true or false

如果没有,例如你使用IE浏览器没有babel transile:

1
channelArray.indexOf('three') !== -1; //will return true or false

indexOf方法将返回元素在数组中的位置,因为如果在第一个位置找到针,我们使用!==不同于-1。


另请注意,"in"关键字不适用于数组。它仅适用于对象。

1
propName in myObject

数组包含测试是

1
myArray.includes('three');


TS有许多用于阵列的实用方法,可通过阵列原型获得。有多个可以实现这一目标,但最方便的两个目的是:

  • Array.indexOf()将任何值作为参数,然后返回可在数组中找到给定元素的第一个索引,如果不存在则返回-1。
  • Array.includes()将任何值作为参数,然后确定数组是否包含此值。如果找到值,则返回true的方法,否则返回false
  • 例:

    1
    2
    3
    4
    5
    var channelArray: string[] = ['one', 'two', 'three'];
    console.log(channelArray.indexOf('three'));      // 2
    console.log(channelArray.indexOf('three') > -1); // true
    console.log(channelArray.indexOf('four') > -1);  // false
    console.log(channelArray.includes('three'));     // ture

    使用JavaScript Array include()方法

    1
    2
    var fruits = ["Banana","Orange","Apple","Mango"];
    var n = fruits.includes("Mango");

    亲自尝试一下?链接

    定义

    includes()方法确定数组是否包含指定的元素。

    如果数组包含元素,则此方法返回true,否则返回false。


    这样做:

    1
    2
    3
    4
    departments: string[]=[];
    if(this.departments.indexOf(this.departmentName.trim()) >-1 ){
                return;
        }