将对象数组转换为字符串数组

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

to

["demo1", "demo2"]

我已经尝试使用reduce()函数


你也可以使用 underscore.jspluck 函数。只需要这样简单的一行代码:_.pluck(demoArray, 'text'); - Thatkookooguy
5个回答

12
你可以使用 Array.prototype.map 进行操作:

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

有了 ES6,你可以使用 箭头函数

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

3
你可以使用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是第二项。

1

试试这个:

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

1
如果您正在使用underscore js,使用pluck更容易将数组转换,并且比reduce更有效。
var arr = [  {"text":"demo1"},  {"text":"demo2"}];    
_.pluck(arr , 'text');

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

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)

或者你也可以创建一个变量并将每个item.text连接起来

JSFIDDLE


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接