অ্যারে উপাদান জাভাস্ক্রিপ্টে আছে কি না তা কীভাবে পরীক্ষা করবেন?


196

আমি টাইটানিয়ামের সাথে কাজ করছি, আমার কোডটি এমন দেখাচ্ছে:

var currentData = new Array();

if(currentData[index]!==""||currentData[index]!==null||currentData[index]!=='null')
{
    Ti.API.info("is exists  " + currentData[index]);
    return true;
}
else
{   
    return false;
}

আমি অ্যারেতে একটি সূচক পাস করছি currentData। আমি এখনও উপরে কোড ব্যবহার করে একটি অ-বিদ্যমান উপাদান সনাক্ত করতে সক্ষম নই।


1
আপনার যুক্তি ভুল। &&আপনার স্বতন্ত্র অবস্থার মধ্যে সংযোগগুলি ( ) দরকার ।
জে কে

উত্তর:


376

ব্যবহার typeof arrayName[index] === 'undefined'

অর্থাত

if(typeof arrayName[index] === 'undefined') {
    // does not exist
}
else {
    // does exist
}

4
+1, দুর্দান্ত আপনি if(arrayName[index] === 'undefined')একটি শর্টকাট হিসাবেও ব্যবহার করতে পারেন
আনচোভিলেজেন্ড

65
অ্যানচোভি লিজেন্ড না, আপনি পারবেন না! তবে আপনি ব্যবহার করতে পারেন if(arrayName[index] === undefined)
ডেনিস ভি

18
এটি ব্যর্থ হয়, যদি আইটেমটি থাকে তবে এর মানটি সংজ্ঞায়িত হয়; পরিবর্তে এই উত্তরটি ব্যবহার করুন -> স্ট্যাকওভারফ্লো.com
জিজ্ঞাসা

যেমন @ ম্যাটুস বলেছিলেন, এখানে আরও ব্যাখ্যা রয়েছে , আপনার সচেতন হওয়া উচিত।
এস থিওনগেন

1
যদি (অ্যারেনাম [সূচক] === অপরিজ্ঞাত) আপনি আরও ছোট ব্যবহার করতে পারেন যা যদি হয় (! অ্যারে নেম [সূচক])
পার্ক জংবাম

84
var myArray = ["Banana", "Orange", "Apple", "Mango"];

if (myArray.indexOf(searchTerm) === -1) {
  console.log("element doesn't exist");
}
else {
  console.log("element found");
}

2
দুর্ভাগ্যক্রমে, এটি এক IE 7 এবং নীচে কাজ করে না।
darksoulsong

4
আমার মতে এটি সর্বোত্তম উত্তর, এখনের মধ্যে আইই 7 any আর কোনও মূল ভিত্তিযুক্ত নয় তাই এটি কোনও সমস্যা নয়। যদিও আমি ট্রিপল সমান ব্যবহার করার পরামর্শ দেবif(myArray.indexOf(searchTerm) === -1)
মুরো গাভা

2
ওপিতে প্রদত্ত সূচকের নম্বর বিদ্যমান কিনা তা সন্ধান করছিল । প্রদত্ত মান বিদ্যমান কিনা তা এটি পরীক্ষা করছে ।
jonathan.s

6

কেউ যদি দয়া করে আমার সংশোধন করে তবে আমাকে সংশোধন করতে পারেন তবে এএফএইকি নিম্নলিখিতটি সত্য:

  1. অ্যারেগুলি আসলে জেএসের অধীনে কেবলমাত্র অবজেক্ট jects
  2. সুতরাং, তাদের থেকে প্রোটোটাইপ পদ্ধতিটি hasOwnProperty"উত্তরাধিকারসূত্রে" পেয়েছেObject
  3. আমার পরীক্ষায়, hasOwnPropertyঅ্যারে সূচীতে কিছু বিদ্যমান কিনা তা পরীক্ষা করতে পারে।

সুতরাং, যতক্ষণ না উপরেরটি সত্য, আপনি কেবলমাত্র:

const arrayHasIndex = (array, index) => Array.isArray(array) && array.hasOwnProperty(index);

ব্যবহার:

arrayHasIndex([1,2,3,4],4); আউটপুট: false

arrayHasIndex([1,2,3,4],2); আউটপুট: true


এটি অ্যারেতে অপরিজ্ঞাত এবং নাল মানগুলির জন্যও কাজ করে, যা এখানে অন্য উত্তরগুলির মধ্যে কেউই করে না।
জেক ঠাকুর 15 ই

এমডিএন থেকে যাচাই করা হয়েছে: "যদি কোনও বস্তু একটি অ্যারে হয় তবে haswwnProperty পদ্ধতি কোনও সূচক বিদ্যমান কিনা তা পরীক্ষা করতে পারে।" বিকাশকারী.মোজিলা.আর.ইন-
লরেন

3

আমাকে টেকফুবারের উত্তরটি একটি try.. catchব্লকে মুড়ে ফেলতে হয়েছিল , এর মতো:

try {
  if(typeof arrayName[index] == 'undefined') {
    // does not exist
  }
  else {
  // does exist
  }
} 
catch (error){ /* ignore */ }

... ক্রোমে এটি যেভাবে কাজ করেছিল, যাইহোক (অন্যথায় কোডটি একটি ত্রুটির সাথে বন্ধ হয়ে গেছে)।


ভেরিয়েবলটি arrayNameনিজের (বা index) উপস্থিত না থাকলে কেবল ত্রুটিযুক্ত "ভাঙা" হওয়া উচিত । কেবল একটি অনির্ধারিত অ্যারে উপাদান অ্যাক্সেস করার ফলে "ত্রুটি" হওয়া উচিত নয়?
মিঃউইট

3

যদি অ্যারের উপাদানগুলিও সরল অবজেক্ট বা অ্যারে হয় তবে আপনি কিছু ফাংশন ব্যবহার করতে পারেন :

// search object
var element = { item:'book', title:'javasrcipt'};

[{ item:'handbook', title:'c++'}, { item:'book', title:'javasrcipt'}].some(function(el){
    if( el.item === element.item && el.title === element.title ){
        return true; 
     } 
});

[['handbook', 'c++'], ['book', 'javasrcipt']].some(function(el){
    if(el[0] == element.item && el[1] == element.title){
        return true;
    }
});

someএখানে প্রায় আধুনিক উপায়। এমনকি এটি ওয়ান-লাইনারের myArray.some(el => el.item === element.item && el.title === element.title)
মতোও

2

অ্যারে বিবেচনা করুন:

var a ={'name1':1, 'name2':2}

যদি আপনি 'নেম 1' একটিতে বিদ্যমান কিনা তা পরীক্ষা করতে চান তবে কেবল এটির সাথে এটি পরীক্ষা করুন in:

if('name1' in a){
console.log('name1 exists in a')
}else
console.log('name1 is not in a')

5
"var a" আপনার ক্ষেত্রে কোনও অ্যারে অবজেক্ট নয়, তবে নিয়মিত অবজেক্ট। Var a = [...] হওয়া উচিত। আমি মনে করি লেখকের এটিই প্রয়োজন ছিল।
তোমাজাহলিন

3
কোনও অ্যারেতে কোনও সূচকের উপস্থিতি নয়, কোনও কীতে কীটির অস্তিত্বের জন্য এটি পরীক্ষা করা যায়।
বেন হাল হাল


1

আপনি যদি আন্ডারস্কোর.জে ব্যবহার করেন তবে এই ধরণের নাল এবং অপরিজ্ঞাত চেকটি লাইব্রেরি দ্বারা লুকানো রয়েছে।

সুতরাং আপনার কোডটি এর মতো দেখাবে -

var currentData = new Array();

if (_.isEmpty(currentData)) return false;

Ti.API.info("is exists  " + currentData[index]);

return true;

এটি এখন অনেক বেশি পাঠযোগ্য বলে মনে হচ্ছে।


এমনকি যদি আপনার উত্তরটি সঠিক হয় তবে আমি এর জন্য দুবার ভাবব think আপনার কোডটি কেবল একটি খালি মান যাচাই করার জন্য আন্ডারস্কোর.জেএস নির্ভর হয়ে উঠবে। কেবলমাত্র একটি সাধারণ মোড়কের ফাংশনটিই সেট করুন (v) {রিটার্ন (টাইপফ ভি! == 'অপরিজ্ঞাত'); }
হেরোসেলহিম

1

আইটেম চেক করার সহজ উপায় বা না

Array.prototype.contains = function(obj) {
    var i = this.length;
    while (i--)
       if (this[i] == obj)
       return true;
    return false;
}

var myArray= ["Banana", "Orange", "Apple", "Mango"];

myArray.contains("Apple")

3
মারাত্মকভাবে অদক্ষ আমি যদি সেট করে রাখি myArray[1000000] = 'Pear'তবে আপনার ফাংশন চিরতরে নেবে।
জন হেন্কেল

1

এই মতটি আমার মতে সবচেয়ে সহজ।

var nameList = new Array('item1','item2','item3','item4');

// Using for loop to loop through each item to check if item exist.

for (var i = 0; i < nameList.length; i++) {
if (nameList[i] === 'item1') 
{   
   alert('Value exist');
}else{
   alert('Value doesn\'t exist');
}

এবং এটি করার আরেকটি উপায় হতে পারে।

nameList.forEach(function(ItemList)
 {
   if(ItemList.name == 'item1')
        {
          alert('Item Exist');
        }
 }


1

আপনি যদি এই জাতীয় কিছু খুঁজছেন।

নীচের স্নিপেটর এখানে

var demoArray = ['A','B','C','D'];
var ArrayIndexValue = 2;
if(demoArray.includes(ArrayIndexValue)){
alert("value exists");
   //Array index exists
}else{
alert("does not exist");
   //Array Index does not Exists
}


আমি আজ আমার প্রকল্পটি ব্যবহার করতে যাচ্ছি এটিই সমাধান। ডাউনভোটগুলি কেন ছিল তা আমার কোনও ধারণা নেই - এটি আমার ব্যবহারের ক্ষেত্রে সবচেয়ে ভাল কাজ করে, যা সার্ভার-সাইড নোড.জেএস / এক্সপ্রেস। আপনাকে ধন্যবাদ
mkrufky

@ এমক্রুফকি কারণ এটি এই প্রশ্নটির জন্য নয়। আমাদের মধ্যে Array.includesএকটি মান যেমন একটি অ্যারে, তা চেক করার আগে অনেক আগেই ক্ষমতা ছিল demoArray.indexOf(ArrayIndexValue) !== -1। এই প্রশ্নটি সূচকে অ্যারেটিতে উপস্থিত রয়েছে কিনা তা যাচাই করা হচ্ছে, যা সম্পূর্ণ ভিন্ন সমস্যা
r3wt

0

আপনি কেবল এটি ব্যবহার করতে পারেন:

var tmp = ['a', 'b'];
index = 3 ;
if( tmp[index]){
    console.log(tmp[index] + '\n');
}else{
    console.log(' does not exist');
}

3
ভুল। tmp = [0,0,0,0]তবে যদি tmp [3] থাকা উচিত
জন হেন্কেল 6'18

0
(typeof files[1] === undefined)?
            this.props.upload({file: files}):
            this.props.postMultipleUpload({file: files widgetIndex: 0, id})

অ্যারেতে থাকা দ্বিতীয় আইটেমটি typeofপরীক্ষা করে ব্যবহার করে অপরিবর্তিত আছে কিনা তা পরীক্ষা করুনundefined


0

জেএসে কোনও অ্যারে সূচক উপস্থিত রয়েছে কিনা তা অনুসন্ধান করার সময়, এটি করার সবচেয়ে সহজ এবং সংক্ষিপ্ততম উপায় হ'ল দ্বিগুণ অবহেলা।

let a = [];
a[1] = 'foo';
console.log(!!a[0])   // false
console.log(!!a[1])   // true

0

inঅপারেটরটি ঠিক এটির জন্য। এটি এর মতো ব্যবহার করুন:

if (index in currentData) 
{ 
    Ti.API.info(index + " exists: " + currentData[index]);
}

গৃহীত উত্তর ভুল, এটি একটি মিথ্যা নেতিবাচক দেবে মান indexহয় undefined:

const currentData = ['a', undefined], index = 1;

if (index in currentData) {
  console.info('exists');
}
// ...vs...
if (typeof currentData[index] !== 'undefined') {
  console.info('exists');
} else {
  console.info('does not exist'); // incorrect!
}


0
const arr = []

typeof arr[0] // "undefined"

arr[0] // undefined

বুলিয়ান এক্সপ্রেশন যদি

typeof arr[0] !== typeof undefined

সত্য হয় তবে 0 টি আরারে থাকে


0

এটি সূক্ষ্ম কাজ করে, বিপরীতে টাইপ করে পরীক্ষা করে undefined

if (currentData[index] === undefined){return}

টেস্ট:

const fruits = ["Banana", "Orange", "Apple", "Mango"];

if (fruits["Raspberry"] === undefined){
  console.log("No Raspberry entry in fruits!")
}

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.