我试图将原始对象中的一些对象转换为数组变量。
console.log("news len", news["articles"].length); // this comes out to 9
for(var a in news["articles"]) {
var results = [];
results.push({
title:news["articles"][a]["title"],
subtitle: news["articles"][a]["description"],
item_url:news["articles"][a]["title"],
image_url:news["articles"][a]["urlToImage"],
});
}
console.log("results len",results.length); //only contains one entry
还有另一种方法可以实现这一目标,如果不是,我做错了什么?
如果有帮助,可以使用Node js。
答案 0 :(得分:3)
您可以直接使用map并在回调中返回一个对象以获取新数组
var results = news.articles.map(function (a) {
return {
title: a.title,
subtitle: a.description,
item_url: a.title,
image_url: a.urlToImage
};
};
答案 1 :(得分:2)
主要问题是循环的每次迭代都会将results
重新设置为空数组:
var results=[];
如果您在循环之前移动该语句,您将获得更接近您想要的内容。
那就是说news["articles"]
已经 一个数组,所以你可以只使用Array.prototype.map
?
答案 2 :(得分:0)
var results = [];
news["articles"].map(function(val,idx){
results.push({
title: val["title"],
//etc
}
});