以Angular方式将对象值转换为数组

时间:2015-03-26 02:04:45

标签: angularjs

我有以下对象:

 formData : {
       _id: "550de8956e2d0948080e220f" 
       category: "Tag1"
       isFeatured: "Yes" 
       likeCount: 557 
       title: "Integrating WordPress with Your Website"
    }

我尝试了JavaScript,但它返回了一个空值:

 var arryFormData = Array.prototype.slice.call(formData)

如何将formData转换为仅包含其值的数组,而不是属性?

如......

 arryFormData = ["550de8956e2d0948080e220f", "Tag1", "Yes", 557, "Integrating WordPress with Your Website"]

5 个答案:

答案 0 :(得分:5)

或者如果你想要更多功能代码:

var arr = [];
angular.forEach(obj, function(value, key){
    arr.push(value);
});

答案 1 :(得分:3)

如果您使用的是underscore.js,

_.values(formData)
// will get ["550de8956e2d0948080e220f", "Tag1", "Yes", 557, "Integrating WordPress with Your Website"]

请参阅:here

可替换地:

var res = [];
for (var x in formData){
   formData.hasOwnProperty(x) && res.push(formData[x])
}
console.log(res);

无论如何,数组元素可能不是您想要的顺序。

答案 2 :(得分:1)

我认为没有神奇的方法,你只需要使用for循环:

for (var key in obj) {
    values.push(obj[key])
}

要使角度变大,你可以使用angular.forEach我猜......

答案 3 :(得分:1)

我更喜欢使用Object.keys()和es6语法的一行解决方案,直到Object.values()不在此

const values = Object.keys(obj).map(it => obj[it])

或在es5

var values = Object.keys(obj).map(function(it) { 
   return obj[it]
})

答案 4 :(得分:0)

这是我在Angular 5中处理将Object转换为Array的方式,因为API在JSON Object中提供响应,因此我们可以将其转换为数组以使用它。

    let tmepArr = {};
    Object.keys(res).forEach( key => {
        tmepArr['name'] = [res[key].name];
        tmepArr['id'] = [res[key].id];
    });
    this.marketplaceDropDown = [tmepArr];