如何让map函数返回一个值而不是数组?

如何让map函数返回一个值而不是数组?

问题描述:

最初的想法与下面的功能是,它应该返回卡(对象),只有当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返回对象,而不是数组。

谢谢!

您可以使用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),当然。 –