检查数组是否包含特定对象
Check whether an array contains a specific object
我知道这种情况经常发生,但我在这里搜索过,没有找到确切的解决方案
因此,我有一个包含以下值的对象数组:
device_names = [
{
address: 'XX:XX:XX:XX:XX:XX',
name: 'device name'
},
{
address: 'XX:XX:XX:XX:XX:XX',
name: 'device name'
}]
我想要的是检查这个数组是否包含具有特定地址的设备,如果存在,则返回true。请不要建议使用$.inArray
,因为它在与对象数组一起使用时总是返回-1。
循环遍历数组,检查地址是否匹配,如果匹配,则返回true。
function checkAddress(address) {
for (var i = 0; i<device_names.length; i++) {
if (device_names[i].address == address) {
return true
}
}
}
您可以直接使用$.grep吗?
像这样的。。。$.grep(设备名称,函数(d){return d.address="XX:XX:XX:XX:XX-XX:XX";})
您可以创建地址到另一个数组的映射,并使用indexOf查看地址是否在数组中。
var device_names = [
{
address: '11:XX:XX:XX:XX:XX',
name: 'device name'
},
{
address: '22:XX:XX:XX:XX:XX',
name: 'device name'
}]
var device_addresses = device_names.map(function(obj){
return obj.address;
});
device_addresses.indexOf("22:XX:XX:XX:XX:XX"); // returns 1
如果您准备使用undercore.js:
function deepFind(array, needle) {
return _.findIndex(array, function(value) {
return _.isEqual(value, needle);
});
}
用法:
deepFind(device_names, {
address: 'XX:XX:XX:XX:XX:XX',
name: 'device name'
});
它返回找到给定设备的第一个索引。如果没有,它将返回-1。
if(deepFind(...) > -1)
console.log("The device is found.");
相关文章:
- 如何访问对象内部的“categoryIds”字段/键,该对象包含mongodb's `ObjectId(s)`数
- IE8对象当对象包含null值时应出现错误
- 实际的angular js控制器对象包含什么
- RXJS5 - 按每个对象包含的可观察性过滤对象数组
- 如何在Jade编译之前将Javascript对象包含在Jade模板中
- json对象包含php DateTime,如何转换为漂亮的日期字符串
- 查找父对象的特定子对象's以前的兄弟姐妹,当兄弟姐妹是动态的
- 如何使JQuery对象包含Dom对象的快照
- 如果对象包含JavaScript中的字母,如何返回该对象
- 对象包含相同的值,但应该't
- 从对象的特定子对象
- 将一个对象包含在另一个对象中
- Mocha,Chai:断言对象包含在对象数组中
- 测试JSON对象包含我期望的属性
- 如何从json对象中提取数据,json对象包含具有不同类型对象的映射
- AngularJS$http发布对象包含数组的奇怪行为
- 我如何通过另一个对象访问一个对象,这个对象包含一个对象,这个对象是我想要访问的对象的属性
- 如何切换映射-发出一个对象包含原始和新的可观察对象
- 在这种情况下,我应该使用数组(包含对象)还是对象(包含对象)
- 如果对象包含在另一个数组中,则从该数组中删除该对象