【问题标题】:How do I make a map function return a single value rather than an array?如何使 map 函数返回单个值而不是数组?
【发布时间】:2017-07-16 16:16:21
【问题描述】:

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

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;
    }
  }))
}

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

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

谢谢!

【问题讨论】:

    标签: javascript function object dictionary react-native


    【解决方案1】:

    您可以使用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;
        });
    }
    

    【讨论】:

    • 您谈论的是Array#every,但不久之后使用了some()。是错字还是我理解错了什么?
    • 当然是Array#some
    • 你甚至可以使用过滤器来只保留数组的所需元素
    • @ManjeetSingh,filter 也返回一个数组,但 op 不想要一个数组。
    • @NinaScholz,是的,你是对的,但如果过滤器返回一个包含单个元素的数组,我们可以轻松地将其转换为数组 [0] 的对象,
    猜你喜欢
    • 2021-10-17
    • 2020-08-22
    • 1970-01-01
    • 2015-11-27
    • 2014-06-27
    • 2020-08-17
    • 1970-01-01
    • 2020-11-13
    • 1970-01-01
    相关资源
    最近更新 更多