将对象数组转换为angularjs中的字符串数组

时间:2016-08-12 08:27:55

标签: javascript angularjs

[
  { "text": "demo1" },
  { "text": "demo2" }
]

["demo1", "demo2"]

我尝试过使用reduce()

5 个答案:

答案 0 :(得分:5)

您可以使用Array.prototype.map

var arr = [
  {"text":"demo1"},
  {"text":"demo2"}
];
var texts = arr.map(function(el) {
  return el.text;
});
console.log(texts);

使用ES6,您可以使用arrow functions

var texts = arr.map((el) => el.text);

答案 1 :(得分:2)

您可以使用map()

var myArray = [ {"text": "demo1"}, {"text": "demo2"} ];
var newArray = myArray.map( el => el.text); // [ "demo1", "demo2"]

基本上map()对返回新数组的数组的每个元素执行操作。

当你拥有如此小的阵列时,reduce()很难做到这一点,但仍有可能:

var myArray = [ {"text": "demo1"}, {"text": "demo2"} ];
var newArray = myArray.reduce( (a,b) => [a.text, b.text]) // [ "demo1", "demo2" ]

在此示例中,a是第一项,b是第二项。

答案 2 :(得分:1)

试试这个:

var values = [
{"text":"demo1"},
{"text":"demo2"}
];
var log = [];
angular.forEach(values, function(value, key) {
  this.push(value.text);
}, log);
alert(log);

答案 3 :(得分:1)

如果你使用下划线js,使用pluck转换数组会更容易,然后降低效率。

var arr = [  {"text":"demo1"},  {"text":"demo2"}];    
_.pluck(arr , 'text');

output:-
=> ["demo1", "demo2"]

答案 4 :(得分:0)

您可以使用forEach从数组中获取text,然后使用join获取字符串

var a =[
{"text":"demo1"},
{"text":"demo2"}
]
var sArray = [];
a.forEach(function(item){
sArray.push(item.text)
})

var myString  = sArray.join(',');
console.log(myString)

或者你也可以创建一个变量&每个concat

item.text

JSFIDDLE