JavaScript中对象的Array.prototype.map()等价物

时间:2016-12-03 22:58:43

标签: javascript arrays node.js

我试图将原始对象中的一些对象转换为数组变量。

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。

3 个答案:

答案 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
    }
});