我循环浏览2个JSON对象。一个包含国家/地区对象数组,另一个包含机场对象数组。如果该机场的国家与当前国家/地区匹配,我想循环并返回一个结合了两者信息的模型:
const fs = require('fs');
const allData = require('./airports.json');
const countryCodes = require('./codes.json');
const newData = countryCodes.map(country => {
allData.map(airport => {
if (country.name === airport.country) {
// console.logging here shows me that my equality check is working...
return {
"airport": `${airport.code} - ${airport.name}`,
"countryName": `${airport.country}`,
"countryCode": `${country["alpha-2"]}`
}
}
})
})
fs.writeFile("./newAirlines.json", JSON.stringify(newData, null, 2), function(err) {
if (err) {
console.log(err);
}
});
然而,当我打开它写入的newAirlines.json文件时,我只得到一个null,null,null数组...想知道这是否与异步尝试写入文件之前有关有机会完成循环(?),但我不确定。
任何和所有帮助都很感激。谢谢!
答案 0 :(得分:1)
你的newData变量没有返回任何内容。您应该在第二次迭代中填充数组,而不是在机场阵列上再次调用map。例如:
const newAirlines = []
const newData = countryCodes.forEach(country => {
allData.forEach(airport => {
if (country.name === airport.country) {
newAirlines.push({
"airport": `${airport.code} - ${airport.name}`,
"countryName": `${airport.country}`,
"countryCode": `${country["alpha-2"]}`
})
}
})
})
fs.writeFile("./newAirlines.json", JSON.stringify(newAirlines, null, 2), function(err) {
if (err) {
console.log(err);
}
})