如何让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;
});
}
作品,非常感谢你! –
你谈论'Array#every',但不久之后使用'some()'。这是一个错字,还是我误解了一些东西? –
我的意思是['Array#some'](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/some),当然。 –