2017-02-25 152 views
2

最初的想法與下面的功能是,它應該返回卡(對象),只有當ID匹配的,但是,它並沒有返回任何東西(它返回undefined):如何讓map函數返回一個值而不是數組?

showDetails(cards, id){ 
    cards.map(function(card, index){ 
    if(card.id==id){ 
     console.log(card); 
     return card; 
    } 
    }) 
} 

然後我意識到我有回報的錯誤的範圍,我需要回到環路返回什麼,所以我想出了這個:

showDetails(cards, id){ 
    return (cards.map(function(card, index){ 
    if(card.id==id){ 
     return card; 
    } 
    })) 
} 

上面的代碼的結果是:不確定,對象]

我只想要這個函數showDet ails返回對象,而不是數組。

謝謝!

回答

7

您可以使用Array#some提前退出。

function showDetails(cards, id) { 
    var result; 
    cards.some(function(card) { 
     if (card.id === id) { 
      result = card; 
      return true; 
     } 
    }); 
    return result; 
} 

或者完全使用ES6方法Array#find

function showDetails(cards, id) { 
    return cards.find(function(card) { 
     return card.id === id; 
    }); 
} 
+0

作品,非常感謝你! –

+0

你談論'Array#every',但不久之後使用'some()'。這是一個錯字,還是我誤解了一些東西? –

+2

我的意思是['Array#some'](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/some),當然。 –

相關問題