【发布时间】:2017-04-12 14:11:18
【问题描述】:
下面是一些代码的示例,它使用对象数组来处理简单的任意数据。
底部的 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 函数
const flightDetails = (a) =>
a.map(f => (f.id == flightNu) ? f : null )
这是返回[null, Object]
对象是正确的,带有 flightNu。
找到了,很酷,但假设我添加了 100 个对象,那将返回 99 个空值。那是 99 个问题,但匹配的航班号不是一个。 (对不起)
有人可以阐明使用它的好方法吗?也许我不应该使用三元运算符。如果我能返回正确的f[index],那就太好了。
最好不要将 Object 分配给另一个变量
var MatchingFlight;
const flightDetails = (a) =>
a.map(f => {
if (f.id === flightNu){
MatchingFlight = f;
}
}) ? MatchingFlight : null //returns Object {} close but meh
这个 sn-p 在建议的目标意义上有效,但在范围之外定义 MatchingFlight 似乎不适用于const。
【问题讨论】:
-
如果你想要第一个匹配,使用
.find()而不是.map()。 -
而不是
map使用filter。 -
@torazaburo 好吧,我为一个可行的方案添加了更新,还有其他可用的 sn-ps,但真正的答案是 SLaks 有 3 种可能的方法,这不是 sn-p,所以我只是想更新一个可能的 sn-p 以确保完整性
标签: javascript ecmascript-6 constants