Javascript 返回带有常量1的对象值
下面是一些代码的示例,使用对象数组处理简单的任意数据 底部的const函数用于查找表示为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
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))