Javascript 返回带有常量1的对象值

Javascript 返回带有常量1的对象值,javascript,ecmascript-6,constants,Javascript,Ecmascript 6,Constants,下面是一些代码的示例,使用对象数组处理简单的任意数据 底部的const函数用于查找表示为flightNu var flights = [{ "id": 1234, "airline": "Delta", "depart": "11/23/2016 10:25 AM", "arrive": "11/23/2

下面是一些代码的示例,使用对象数组处理简单的任意数据

底部的const函数用于查找表示为
flightNu

var flights = [{
        "id": 1234,
        "airline": "Delta",
        "depart": "11/23/2016 10:25 AM",
        "arrive": "11/23/2016 11:35 AM",
        "from": "TPA",
        "to": "MEM"
    }, {
        "id": 4321,
        "airline": "AA",
        "depart": "11/23/2016 12:25 PM",
        "arrive": "11/23/2016 2:35 PM",
        "from": "DWF",
        "to": "SEA"
    }]

var flightNu = 4321; 

const flightDetails = (a) => 
a.map(f => (f.id == flightNu) ? f : null )


console.log(flightDetails(flights))
所以我的问题在于正确定义这个常量函数

const flightDetails = (a) => 
a.map(f => (f.id == flightNu) ? f : null )
这将返回
[null,Object]
对象是正确的,带有flightNu。 找到了,很酷,但假设我添加了100个对象,那将返回99个空值。这是99个问题,但匹配的航班号不是一个。(对不起)

有人能告诉我们一个好的使用方法吗?也许我不应该使用三元运算符。如果我能返回正确的
f[index]
,那就太好了

最好不要将对象分配给另一个变量 这个代码段在建议的目标意义上工作,但是定义范围外的MatchingFlight似乎不适合
const

map()
将每个元素转换为其他元素。 那不是你想要的


您想要的是
filter()
(只返回匹配的元素)或
find()
(返回第一个匹配项),而不是
map()

,您可以在JavaScript中使用
filter
,它返回与过滤器匹配的元素,类似于这样

const flightDetails = (a) => 
a.filter(f => (f.id == flightNu))

如果您想要第一个匹配,请使用
.find()
而不是
.map()
。使用
filter
@torazaburo而不是
map
我为一个场景添加了更新,还有其他片段可以工作,但真正的答案是使用3种可能的方法,这不是片段,所以我只想用completenessI的一个可能的代码片段进行更新,我使用了filter,但这次我没有使用三元运算符。我该不该这么做?这取决于,有时若对象是未定义的,那个么我们可以使用三元运算符,因为若它失败了,我们就把它赋值为null。否则就没有必要使用三元运算符。希望这有帮助。回答了您的问题?
find()
在某些情况下会很好,但是由于
filter()
返回一个数组,假设为了参数的缘故找到了多个航班号,那么在这种情况下效果很好。
const flightDetails = (a) => 
a.filter(f => (f.id == flightNu))