Hiện tại tôi đang sử dụng Angular 2.0. Tôi có một mảng như sau:
var channelArray: Array<string> = ['one', 'two', 'three'];
Làm cách nào tôi có thể kiểm tra TypeScript xem channelArray có chứa chuỗi 'ba' không?
Hiện tại tôi đang sử dụng Angular 2.0. Tôi có một mảng như sau:
var channelArray: Array<string> = ['one', 'two', 'three'];
Làm cách nào tôi có thể kiểm tra TypeScript xem channelArray có chứa chuỗi 'ba' không?
Câu trả lời:
Giống như trong JavaScript, sử dụng Array.prototype.indexOf () :
console.log(channelArray.indexOf('three') > -1);
Hoặc sử dụng ECMAScript 2016 Array.prototype.includes () :
console.log(channelArray.includes('three'));
Lưu ý rằng bạn cũng có thể sử dụng các phương thức như được hiển thị bởi @Nitzan để tìm chuỗi. Tuy nhiên, bạn thường không làm điều đó cho một mảng chuỗi, mà là cho một mảng các đối tượng. Có những phương pháp hợp lý hơn. Ví dụ
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'}]
Tài liệu tham khảo
[ts] Property 'includes' does not exist on type 'string[]'
lỗi, tôi có cần cập nhật tsconfig để hỗ trợ tính năng ecma 6 này không?
"lib": ["es7", "dom"]
Bạn có thể sử dụng một số phương pháp :
console.log(channelArray.some(x => x === "three")); // true
Bạn có thể sử dụng phương thức find :
console.log(channelArray.find(x => x === "three")); // three
Hoặc bạn có thể sử dụng phương thức indexOf :
console.log(channelArray.indexOf("three")); // 2
Nếu mã của bạn dựa trên ES7:
channelArray.includes('three'); //will return true or false
Nếu không, ví dụ bạn đang sử dụng IE không có transpile babel:
channelArray.indexOf('three') !== -1; //will return true or false
các indexOf
phương pháp sẽ trở lại vị trí nguyên tố này có thành mảng, vì lý do đó chúng tôi sử dụng !==
khác nhau từ -1 nếu kim được tìm thấy ở vị trí đầu tiên.
Cũng lưu ý rằng từ khóa "trong" không hoạt động trên mảng. Nó chỉ hoạt động trên các đối tượng.
propName in myObject
Kiểm tra bao gồm mảng là
myArray.includes('three');
Sử dụng JavaScript Array bao gồm () Phương thức
var fruits = ["Banana", "Orange", "Apple", "Mango"];
var n = fruits.includes("Mango");
Tự mình thử » liên kết
Định nghĩa
Phương thức include () xác định xem một mảng có chứa phần tử đã chỉ định hay không.
Phương thức này trả về true nếu mảng chứa phần tử và false nếu không.
TS có nhiều phương thức tiện ích cho các mảng có sẵn thông qua nguyên mẫu của Mảng. Có nhiều mục có thể đạt được mục tiêu này nhưng hai cách thuận tiện nhất cho mục đích này là:
Array.indexOf()
Lấy bất kỳ giá trị nào làm đối số và sau đó trả về chỉ mục đầu tiên có thể tìm thấy một phần tử đã cho trong mảng hoặc -1 nếu không có.Array.includes()
Lấy bất kỳ giá trị nào làm đối số và sau đó xác định xem một mảng có bao gồm giá trị này hay không. Phương thức trả về true
nếu giá trị được tìm thấy, nếu không false
.Thí dụ:
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
Bạn có thể sử dụng filter
quá
this.products = array_products.filter((x) => x.Name.includes("ABC"))
làm như thế này:
departments: string[]=[];
if(this.departments.indexOf(this.departmentName.trim()) >-1 ){
return;
}
channelArray: string[]