加入对象值?

时间:2013-10-22 14:49:15

标签: javascript angularjs

我有这个对象:

"cuisines":{
  "2": "Burgers",
  "7": "American",
  "9": "Sandwiches",
  "11": "Breakfast"
}

我怎样才能将它变成这样?

Burgers, American, Sandwiches, Breakfast

我正在使用棱角分明。

3 个答案:

答案 0 :(得分:1)

由于无法保证对象中属性的顺序,您必须对属性进行排序以按顺序获取它们。将它们放在一个数组中并对它们进行排序,然后你可以将这些名称放在一个数组中并加入它:

var o = {
  "2": "Burgers",
  "7": "American",
  "9": "Sandwiches",
  "11": "Breakfast"
};

var arr = [];
for (key in o) {
    arr.push({ key: key, value: o[key] });
}
arr.sort(function(x,y){ return x.key - y.key});
var names = [];
for (var i = 0; i < arr.length; i++) {
    names.push(arr[i].value);
}
var result = names.join(', ');

演示:http://jsfiddle.net/Guffa/6HkNE/

答案 1 :(得分:0)

我不知道你为什么要这样,但你可以试试这个,

var cuisine = {
  "2": "Burgers",
  "7": "American",
  "9": "Sandwiches",
  "11": "Breakfast"
};
var data =[];
$.each(cuisine, function(key,val){
    data.push(val);
});

console.log(data.join(','));

Demo

答案 2 :(得分:0)

这似乎是一个非常奇怪的问题,并且与Angular本身没有任何关系。这似乎是一个纯粹的JavaScript问题。

话虽如此,你应该能够做到这一点:

var values = [];
for(var key in cuisines){
    if(cuisines.hasOwnProperty(key)){
         values.push(cuisines[key]);
    }
}
// values now looks like ["Burgers","American","Sandwiches","Breakfast"]