web-dev-qa-db-ja.com

配列要素がjavascriptに存在するかどうかを確認する方法

私はTitaniumを使用しています。私のコードは次のようになります。

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にインデックスを渡しています。私はまだ上記のコードを使って存在しない要素を検出することができません。

152
Pradeep

typeof arrayName[index] === 'undefined'を使う

すなわち.

if(typeof arrayName[index] === 'undefined') {
    // does not exist
}
else {
    // does exist
}
298
techfoobar
var myArray = ["Banana", "Orange", "Apple", "Mango"];

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

次のように、techfoobarの答えをtry..catchブロックでラップする必要がありました。

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

...それは、とにかくクロムでどのように機能したかです(そうでなければ、コードはエラーで停止しました)。

3
Swiss Mister

Arrayの要素が単純なオブジェクトまたは配列でもある場合は、 some 関数を使用できます。

// 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;
    }
});
3

配列aを考えます。

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

'name1'がに存在するかどうかを確認したい場合は、単にinでテストしてください。

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

私が間違っているなら誰かが私を訂正してください、しかしAFAIK以下は本当です:

  1. 配列は実際にはJSの内部にある単なるオブジェクトです。
  2. したがって、それらはプロトタイプメソッドhasOwnPropertyObjectから「継承」したものです。
  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

1
r3wt

underscore.js を使用すると、これらのタイプのnullおよび未定義のチェックはライブラリによって隠されます。

だからあなたのコードはこのようになります -

var currentData = new Array();

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

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

return true;

読みやすくなりました。

1
vatsal

この方法は私の考えでは最も簡単なものです。

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
AmJustSam

あなたは単にこれを使うことができます:

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

商品の有無を確認する簡単な方法

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")
1
Suhail Ahmed
var fruits = ["Banana", "Orange", "Apple", "Mango"];
if(fruits.indexOf("Banana") == -1){
    console.log('item not exist')
} else {
        console.log('item exist')
}
0
Mohammed Jafar
var demoArray = ['A','B','C','D'];
var ArrayIndexValue = 2;
if(ArrayIndexValue in demoArray){
   //Array index exists
}else{
   //Array Index does not Exists
}
0
Vikas Kandari
(typeof files[1] === undefined)?
            this.props.upload({file: files}):
            this.props.postMultipleUpload({file: files widgetIndex: 0, id})

typeofを使用してundefinedをチェックして、配列の2番目の項目が未定義かどうかをチェックします

0
mewc

あなたがこのような何かを探しているなら。

これは次のスニペットです。

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
}
0
Geeky