如何确定Javascript数组是否包含一个属性等于给定值的对象?我有一个数组vendors = [
{
Name: 'Magenic',
ID: 'ABC'
},
{
Name: 'Microsoft',
ID: 'DEF'
} //and so on goes array... ];如何检查这个数组以确定Magenic是否存在?我不想循环,除非我必须这样做。我可能有几千张唱片。更新由于这是一个很受欢迎的帖子,我想我应该分享一些我发现的新东西。看来@CAFxX已经分享了这一点!我应该多读些这些。我偶然发现https:/benfrain.com/谅解-原生-javascript-数组-方法/.vendors.filter(function(vendor){ return vendor.Name === "Magenic" });对于ECMAScript 2015,使用新的箭头函数甚至更简单:vendors.filter(vendor => (vendor.Name === "Magenic"));
3 回答
繁星coding
TA贡献1797条经验 获得超4个赞
没有“魔术”的方法来检查数组中没有循环的东西。即使您使用某些函数,该函数本身也将使用一个循环。你能做的是,一旦你找到你想要的东西来减少计算时间,就从循环中挣脱出来。
var found = false;for(var i = 0; i < vendors.length; i++) { if (vendors[i].Name == 'Magenic') { found = true; break; }}
慕莱坞森
TA贡献1810条经验 获得超4个赞
if (vendors.filter(e => e.Name === 'Magenic').length > 0) { /* vendors contains the element we're looking for */}
if (vendors.some(e => e.Name === 'Magenic')) { /* vendors contains the element we're looking for */}
if (vendors.filter(function(e) { return e.Name === 'Magenic'; }).length > 0) { /* vendors contains the element we're looking for */}
饮歌长啸
TA贡献1951条经验 获得超3个赞
Array.Prototype.
let hasMagenicVendor = vendors.some( vendor => vendor['Name'] === 'Magenic' )
Array.Prototype.filter()
let magenicVendors = vendors.filter( vendor => vendor['Name'] === 'Magenic' )
magenicVendors.length
Array.Prototype.find()
undefined
let magenicVendor = vendors.find( vendor => vendor['Name'] === 'Magenic' );
undefined
添加回答
举报
0/150
提交
取消