मैं कैसे जांच सकता हूं कि क्या टाइप में टाइपस्क्रिप्ट में एक स्ट्रिंग है?


274

वर्तमान में मैं Angular 2.0 का उपयोग कर रहा हूं। मेरे पास एक सरणी है जो इस प्रकार है:

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

मैं टाइपस्क्रिप्ट में कैसे जांच सकता हूं कि क्या चैनलअरे में एक स्ट्रिंग 'तीन' है?


16
यह होना चाहिएchannelArray: string[]
Nitzan Tomer


यह टाइपस्क्रिप्ट-विशिष्ट नहीं है
myfashionhub

जवाबों:


523

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 ()

Array.some ()

Array.filter ()


1
मुझे एक [ts] Property 'includes' does not exist on type 'string[]'त्रुटि मिलती है , क्या मुझे इस एक्मा 6 सुविधा का समर्थन करने के लिए अपने tsconfig को अपडेट करने की आवश्यकता है?
एस ..

3
पता लगा लिया। मुझे अपनी tsconfig.json फ़ाइल में "lib" के लिए सरणी में "es7" जोड़ने की आवश्यकता थी, उदा। "lib": ["es7", "dom"]
एस ..


10

यदि आपका कोड ES7 आधारित है:

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

यदि नहीं, तो उदाहरण के लिए आप IE का उपयोग कर रहे हैं जिसमें कोई बेबिल ट्रांसपाइल नहीं है:

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

indexOfविधि सरणी में स्थिति तत्व है वापस आ जाएगी, क्योंकि इस बात का हम प्रयोग !==-1 से अगर सुई पहले की स्थिति में पाया जाता है अलग।


8

यह भी ध्यान दें कि "इन" कीवर्ड सरणियों पर काम नहीं करता है। यह वस्तुओं पर ही काम करता है।

propName in myObject

एरियर इंक्लूजन टेस्ट है

myArray.includes('three');

2
यह उल्लेख के लायक है, खासकर यदि आप पायथन से आते हैं। इससे भी बदतर, यह किसी भी तरह सरणियों पर काम करता है, क्योंकि वे वस्तुएं भी हैं। मैं सिर्फ उस तरीके से काम नहीं करता जिस तरह से आप शायद सोचते हैं कि यह होना चाहिए - यह जांचता है कि क्या सूचकांक में इसके बजाय कुछ मौजूद है।
साइटो

5

जावास्क्रिप्ट सरणी का उपयोग करें () विधि शामिल हैं

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

यह अपने आप कोशिश करें » लिंक

परिभाषा

भी शामिल है () तरीका निर्धारित करता है एक सरणी एक निर्दिष्ट तत्व शामिल है या नहीं।

यह विधि सही होती है यदि सरणी में तत्व होता है, और यदि नहीं तो गलत है।


1

TS में सरणियों के लिए कई उपयोगिता विधियां हैं जो Arrays के प्रोटोटाइप के माध्यम से उपलब्ध हैं। ऐसे कई हैं जो इस लक्ष्य को प्राप्त कर सकते हैं लेकिन इस उद्देश्य के लिए दो सबसे सुविधाजनक हैं:

  1. Array.indexOf() किसी भी मूल्य को एक तर्क के रूप में लेता है और फिर पहला सूचकांक देता है जिस पर किसी दिए गए तत्व को सरणी में पाया जा सकता है, या -1 मौजूद नहीं होने पर।
  2. 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


हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.