2017-10-10 6 views
3

配列にオブジェクトが含まれているかどうかをチェックしたいと思います。オブジェクトが存在するかどうかをチェックするだけの値を比較しようとしていませんか?配列に少なくとも1つのオブジェクトが含まれているかどうかをチェックする方法は?

Ex。

$arr = ['a','b','c'] // normal 
$arr = [{ id: 1}, {id: 2}] // array of objects 
$arr = [{id: 1}, {id:2}, 'a', 'b'] // mix values 

配列はオブジェクト

+0

それは常にIDになりますか?それとも変更することができますか? – shv22

+0

配列アイテムをループし、オブジェクトであるかどうかをテストするhttps://stackoverflow.com/questions/8511281/check-if-a-value-is-an-object-in-javascript –

+0

特定の値を探しているのか、それとも配列に「任意のオブジェクト」が含まれている場合 – Cerbrus

答えて

5

の少なくとも1つの要素ががで実装されているかどうかを調べる方法は、関数を提供しています。

let arr = [{id: 1}, {id:2}, 'a', 'b']; 
 
let exists = arr.some(a => typeof a == 'object'); 
 
console.log(exists);

+0

ありがとう@ Alexandru-Ionut Mihai。あなたの答えは完璧です。これがどういう仕組みか教えていただけますか? – parth

+0

@parth、 'some'メソッドは、配列からの項目に対してコールバックテスト関数を提供します。 'test'関数は配列itemがobjectかどうかをチェックします。 'condition'は' typeof a'がオブジェクトであるかどうかです.'some'メソッドは、配列の '少なくとも少なくとも一つの項目が条件を満たしていればtrueを返します。 –

+0

入手しました。ありがとう。 – parth

4

が含まれている場合、どのように私は確認することができますだから私は、アレイは、アレイのいずれかの項目がある場合は、単純にチェックするためにオブジェクトやない

使用someが含まれているかどうかを確認したいですタイプ「オブジェクト」の値

var hasObject = $arr.some(function(val){ 
    return typeof val == "object"; 
}); 
0

あなたは、オブジェクトをカウントして返すために3種類のいずれかのためにそれを使用することができます。

function getType(array) { 
 
    var count = array.reduce(function (r, a) { 
 
     return r + (typeof a === 'object'); 
 
    }, 0); 
 
    
 
    return count === array.length 
 
     ? 'array of objects' 
 
     : count 
 
      ? 'mix values' 
 
      : 'normal'; 
 
} 
 

 
console.log([ 
 
    ['a', 'b', 'c'], 
 
    [{ id: 1 }, { id: 2 }], 
 
    [{ id: 1 }, { id: 2 }, 'a', 'b'] 
 
].map(getType));

0

var hasObject = function(arr) { 
 
    for (var i=0; i<arr.length; i++) { 
 
    if (typeof arr[i] == 'object') { 
 
     return true; 
 
    } 
 
    } 
 
    return false; 
 
}; 
 

 
console.log(hasObject(['a','b','c'])); 
 
console.log(hasObject([{ id: 1}, {id: 2}])); 
 
console.log(hasObject([{id: 1}, {id:2}, 'a', 'b']));

関連する問題