第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何確定Javascript數(shù)組是否包含一個屬性等于給定值的對象?

如何確定Javascript數(shù)組是否包含一個屬性等于給定值的對象?

慕田峪4524236 2019-07-16 09:09:18
如何確定Javascript數(shù)組是否包含一個屬性等于給定值的對象?我有一個數(shù)組vendors = [     {       Name: 'Magenic',       ID: 'ABC'      },     {       Name: 'Microsoft',       ID: 'DEF'     } //and so on goes array... ];如何檢查這個數(shù)組以確定Magenic是否存在?我不想循環(huán),除非我必須這樣做。我可能有幾千張唱片。更新由于這是一個很受歡迎的帖子,我想我應該分享一些我發(fā)現(xiàn)的新東西??磥鞞CAFxX已經(jīng)分享了這一點!我應該多讀些這些。我偶然發(fā)現(xiàn)https:/benfrain.com/諒解-原生-javascript-數(shù)組-方法/.vendors.filter(function(vendor){ return vendor.Name === "Magenic" });對于ECMAScript 2015,使用新的箭頭函數(shù)甚至更簡單:vendors.filter(vendor => (vendor.Name === "Magenic"));
查看完整描述

3 回答

?
慕斯709654

TA貢獻1840條經(jīng)驗 獲得超5個贊

沒有“魔術”的方法來檢查數(shù)組中沒有循環(huán)的東西。即使您使用某些函數(shù),該函數(shù)本身也將使用一個循環(huán)。你能做的是,一旦你找到你想要的東西來減少計算時間,就從循環(huán)中掙脫出來。

var found = false;for(var i = 0; i < vendors.length; i++) {
    if (vendors[i].Name == 'Magenic') {
        found = true;
        break;
    }}



查看完整回答
反對 回復 2019-07-17
?
臨摹微笑

TA貢獻1982條經(jīng)驗 獲得超2個贊

不需要重新發(fā)明車輪循環(huán),至少不顯式(使用箭頭函數(shù)只適用于現(xiàn)代瀏覽器):

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 */}



查看完整回答
反對 回復 2019-07-17
?
精慕HU

TA貢獻1845條經(jīng)驗 獲得超8個贊


不需要循環(huán)。出現(xiàn)在腦海中的三種方法:

Array.Prototype.

這是你的問題最準確的答案,即“檢查是否存在某物”,這意味著一個錯誤的結果。如果有“Magenic”對象,則為真,否則為假:

let hasMagenicVendor = vendors.some( vendor => vendor['Name'] === 'Magenic' )

Array.Prototype.filter()

這將返回所有“Magenic”對象的數(shù)組,即使只有一個(將返回一個元素數(shù)組):

let magenicVendors = vendors.filter( vendor => vendor['Name'] === 'Magenic' )

如果你試圖強迫這個布爾值,它將不能工作,因為一個空數(shù)組(沒有‘Magenic’對象)仍然是真實的。所以就用magenicVendors.length在你的條件下。

Array.Prototype.find()

這將返回第一個“Magenic”對象(或undefined如果沒有):

let magenicVendor = vendors.find( vendor => vendor['Name'] === 'Magenic' );

這會脅迫到布爾OK(任何物體都是真實的,undefined是虛假的)。


注意:我使用的是供應商[“名稱”],而不是供應商名稱,因為屬性名稱的大小寫很奇怪。

注2:在檢查名稱時,沒有理由使用松散相等(=)而不是嚴格相等(=)。



查看完整回答
反對 回復 2019-07-17
  • 3 回答
  • 0 關注
  • 323 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號