我编写了一个函数,它从XML请求中获取解析的JSON,当我使用forEach()时它会起作用,所以我想用reduce()来推动我用JS做的事情。我做错了什么?
forEach功能:
function whatTemp48h(response){
var data;
data = response ;
var temp = [];
data.hourly.data.forEach(function(el,inx){
temp.push(el.apparentTemperature)
})
console.log(temp)
return temp;
}
减少功能:
function gimmeThaTemps(res){
return res.hourly.data.reduce(function(accu,el,c){
accu.push(el.apparentTemperature);
return accu;
},[]);
}
当我使用reduce时,它会返回任何内容。
我正在使用AJAX调用来返回一些已解析的JSON,并且我正在调用AJAX函数并向其发送回调。
function getWeather(lat,long, cb){
var xhr = new XMLHttpRequest();
var response;
xhr.open('GET','https://api.darksky.net/forecast/'+api_KEY+'/'+lat+','+long,true);
xhr.onload = function() {
// console.log(this.responseText)
// console.log(JSON.parse(this.responseText));
cb(JSON.parse(this.responseText));
};
xhr.onerror = function() {
console.log("Connection error");
};
xhr.send();
}
当我打电话给我时
var reqReturn = getWeather(decodeMTL.lat,decodeMTL.long,gimmeThaTemps)
console.log(reqReturn);
对于新问题我很抱歉,但我还在学习JS。 附:我有一个XMLhttpprerequest节点npm在我的命令行中运行它。
答案 0 :(得分:0)
有点偏离主题,您正在寻找的可能是函数map
:
return res.hourly.data.map(function(el) { return el.apparentTemperature; });
或者使用lambda:
return res.hourly.data.map(el => el.apparentTemperature);
答案 1 :(得分:0)
我的代码错了。我在回调中回来,因此它无处可回!