ขณะนี้ฉันกำลังใช้ Angular 2.0 ฉันมีอาร์เรย์ดังนี้
var channelArray: Array<string> = ['one', 'two', 'three'];
ฉันจะตรวจสอบใน TypeScript ว่า channelArray มีสตริง 'สาม' ได้อย่างไร
ขณะนี้ฉันกำลังใช้ Angular 2.0 ฉันมีอาร์เรย์ดังนี้
var channelArray: Array<string> = ['one', 'two', 'three'];
ฉันจะตรวจสอบใน TypeScript ว่า channelArray มีสตริง 'สาม' ได้อย่างไร
คำตอบ:
เหมือนกับใน 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'}]
การอ้างอิง
[ts] Property 'includes' does not exist on type 'string[]'
ข้อผิดพลาดฉันต้องอัปเดต tsconfig เพื่อรองรับคุณสมบัติ ecma 6 หรือไม่
"lib": ["es7", "dom"]
คุณสามารถใช้วิธีการบางอย่าง :
console.log(channelArray.some(x => x === "three")); // true
คุณสามารถใช้วิธีการค้นหา :
console.log(channelArray.find(x => x === "three")); // three
หรือคุณสามารถใช้วิธี indexOf :
console.log(channelArray.indexOf("three")); // 2
หากรหัสของคุณใช้ ES7:
channelArray.includes('three'); //will return true or false
ถ้าไม่เช่นคุณกำลังใช้ IE กับไม่มี babel transpile:
channelArray.indexOf('three') !== -1; //will return true or false
indexOf
วิธีการจะกลับมาตำแหน่งองค์ประกอบที่มีเข้าแถวเพราะการที่เราใช้!==
แตกต่างจาก -1 ถ้าเข็มจะพบได้ที่ตำแหน่งแรก
นอกจากนี้โปรดทราบว่าคำหลัก "ใน" ไม่ทำงานในอาร์เรย์ มันทำงานกับวัตถุเท่านั้น
propName in myObject
การทดสอบรวมอาเรย์คือ
myArray.includes('three');
ใช้วิธีการรวม JavaScript ()วิธีการ
var fruits = ["Banana", "Orange", "Apple", "Mango"];
var n = fruits.includes("Mango");
ลองลิงค์ด้วยตัวเอง»
คำนิยาม
การรวม ()วิธีการกำหนดว่าอาร์เรย์มีองค์ประกอบที่ระบุ
วิธีการนี้จะส่งกลับจริงถ้าอาร์เรย์มีองค์ประกอบและเท็จถ้าไม่
TS มีวิธีการยูทิลิตี้มากมายสำหรับอาร์เรย์ที่มีอยู่ผ่านทางต้นแบบของอาร์เรย์ มีหลายอย่างที่สามารถบรรลุเป้าหมายนี้ได้ แต่สิ่งที่สะดวกที่สุดสำหรับวัตถุประสงค์นี้คือ:
Array.indexOf()
รับค่าใด ๆ เป็นอาร์กิวเมนต์แล้วส่งกลับดัชนีแรกที่องค์ประกอบที่กำหนดสามารถพบได้ในอาร์เรย์หรือ -1 ถ้าไม่มีอยู่Array.includes()
รับค่าใด ๆ เป็นอาร์กิวเมนต์แล้วพิจารณาว่าอาร์เรย์มีค่านี้หรือไม่ วิธีการที่จะกลับถ้าค่าที่พบมิฉะนั้นtrue
false
ตัวอย่าง:
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
คุณสามารถใช้filter
เช่นกัน
this.products = array_products.filter((x) => x.Name.includes("ABC"))
ทำเช่นนี้
departments: string[]=[];
if(this.departments.indexOf(this.departmentName.trim()) >-1 ){
return;
}
channelArray: string[]