所以这里是一些使用对象数组的代码的示例,用于简单的任意数据。
底部的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]
,那将是伟大的。
var MatchingFlight;
const flightDetails = (a) =>
a.map(f => {
if (f.id === flightNu){
MatchingFlight = f;
}
}) ? MatchingFlight : null //returns Object {} close but meh
此代码段适用于建议的目标意义,但在范围之外定义MatchingFlight似乎不适合const
。
答案 0 :(得分:4)
map()
将每个元素转换为其他元素。
那不是你想要的。
您希望filter()
(仅返回匹配的元素)或find()
(返回第一个匹配项),而不是map()
。
答案 1 :(得分:0)
您可以在JavaScript中使用filter
,它返回与此类
const flightDetails = (a) =>
a.filter(f => (f.id == flightNu))