目前我使用的是Angular 2.0。我有一个数组如下:
var channelArray: Array<string> = ['one', 'two', 'three'];
如何在TypeScript中检查channelArray是否包含字符串' 3 '?
你可以使用一些方法:
console.log(channelArray.some(x => x === "three")); // true
你可以使用找到方法:
console.log(channelArray.find(x => x === "three")); // three
或者你可以使用indexOf方法:
console.log(channelArray.indexOf("three")); // 2
与在JavaScript中使用< >强Array.prototype.indexOf() < / >强相同:
console.log(channelArray.indexOf('three') > -1);
或使用ECMAScript 2016 < >强Array.prototype.includes() < / >强:
console.log(channelArray.includes('three'));
注意,你也可以使用@Nitzan所显示的方法来查找字符串。但是,通常不会对字符串数组这样做,而是对对象数组这样做。在那里,这些方法更为合理。例如
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() .find(
Array.some() .some(
Array.filter() .filter(
如果你的代码是基于ES7(或更高版本):
channelArray.includes('three'); //will return true or false
如果不是,例如你正在使用没有babel transpile的IE:
channelArray.indexOf('three') !== -1; //will return true or false
indexOf方法将返回元素在数组中的位置,因为如果在第一个位置找到指针,则使用不同于-1的!==。
indexOf
!==
这样做:
departments: string[]=[]; if(this.departments.indexOf(this.departmentName.trim()) >-1 ){ return; }
还要注意“在”字对数组无效。它只对对象有效。
propName in myObject
数组包含测试为
myArray.includes('three');
使用JavaScript数组包含()方法
var fruits = ["Banana", "Orange", "Apple", "Mango"]; var n = fruits.includes("Mango");
自己试试吧
定义
包括()方法确定数组中是否包含指定的元素。
如果数组中包含该元素,则该方法返回true,否则返回false。
TS有许多数组的实用方法,这些方法可以通过数组的原型得到。有多种方法可以实现这一目标,但最方便的两种方法是:
Array.indexOf()
Array.includes()
true
false
例子:
const 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')); // true
你也可以使用filter
filter
this.products = array_products.filter((x) => x.Name.includes("ABC"))