我想检查数组中是否包含对象。我不想比较值,只是想检查我的数组中是否存在该对象。
例如:
$arr = ['a','b','c'] // normal
$arr = [{ id: 1}, {id: 2}] // array of objects
$arr = [{id: 1}, {id:2}, 'a', 'b'] // mix values
那么我应该如何检查数组是否包含对象
我想检查数组中是否包含对象。我不想比较值,只是想检查我的数组中是否存在该对象。
例如:
$arr = ['a','b','c'] // normal
$arr = [{ id: 1}, {id: 2}] // array of objects
$arr = [{id: 1}, {id:2}, 'a', 'b'] // mix values
那么我应该如何检查数组是否包含对象
您可以使用some
方法,该方法测试数组
中是否有至少一个元素通过提供的函数实现的测试
。
let arr = [{id: 1}, {id:2}, 'a', 'b'];
let exists = arr.some(a => typeof a == 'object');
console.log(exists);
test
函数检查数组项是否为对象。 condition
是指如果typeof a
是对象,则条件为满足。如果至少有一个数组项满足该条件,则some
方法返回true。 - Mihai Alexandru-Ionut我想检查数组是否包含对象
使用some方法来简单地检查数组中的任何一项是否具有“object”类型的值。
var hasObject = $arr.some( function(val){
return typeof val == "object";
});
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']));
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));
对数组进行类型检查
const hasObject = a => Array.isArray(a) && a.some(val => typeof val === 'object')