如何使map函数返回单个值而不是数组?

Lui*_*izo 4 javascript dictionary function object react-native

下面这个函数的最初想法是它应该只在ID匹配时返回卡(一个对象),但是它没有返回任何东西(它返回undefined):

showDetails(cards, id){
  cards.map(function(card, index){
    if(card.id==id){
      console.log(card);
      return card;
    }
  })
}
Run Code Online (Sandbox Code Playgroud)

然后我意识到我的返回范围错误,我需要返回循环返回的内容,所以我想出了这个:

showDetails(cards, id){
  return (cards.map(function(card, index){
    if(card.id==id){
      return card;
    }
  }))
}
Run Code Online (Sandbox Code Playgroud)

上面代码的结果是:[undefined,Object]

我只是希望这个函数showDetails返回对象,而不是数组.

谢谢!

Nin*_*olz 10

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

function showDetails(cards, id) {
    var result;
    cards.some(function(card) {
        if (card.id === id) {
            result = card;
            return true;
        }
    });
    return result;
}
Run Code Online (Sandbox Code Playgroud)

或者使用ES6方法 Array#find

function showDetails(cards, id) {
    return cards.find(function(card) {
        return card.id === id;
    });
}
Run Code Online (Sandbox Code Playgroud)

  • 我的意思是[`Array#some`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/some). (2认同)