我有这样的数据:
data: [{
tag: 'Apple',
}, {
tag: 'Microsoft',
}, {
tag: 'Google',
}]
我希望将它们转换成这样:
data: ['Apple','Microsoft','Google']
有最佳方法吗?无论我在哪里阅读,人们都在使用循环来使用复杂的逻辑。那么有没有其他方法可以做到这一点?
答案 0 :(得分:1)
一种方法是使用Array.map并将对象ele.tag
替换为值return ele.tag
:
var data =
[{
tag: 'Apple',
}, {
tag: 'Microsoft',
}, {
tag: 'Google',
}];
data = data.map(function(ele){ return ele.tag; });
console.log(data);
或者在ES6中你可以更简单地说明这一点:
data = data.map(ele => ele.tag);
答案 1 :(得分:0)
您可以使用for-in循环并将对象的属性推送到数组中。
var data = [{
tag: 'Apple',
}, {
tag: 'Microsoft',
}, {
tag: 'Google',
}];
var tags = [];
for (prop in data) {
tags.push(data[prop].tag);
}
console.log(tags);
答案 2 :(得分:0)
为了便于处理,让我们在OP代码中获取对象并将其分配给变量,如下所示:
var obj = {"data":[{"tag":'Apple'},{"tag":'Microsoft'},{"tag":'Google'}]};
var {data}= obj; // object destructing ...
var mapped = data.map(function( e ){ return e.tag});
// re-assigning value of object's data property
obj["data"] = mapped;
console.log(obj); // obj.data now pertains to array of strings

OP描述的问题涉及一个对象,其数据 property 引用一个对象数组,每个对象都有一个tag属性。 OP查询如何修改数据属性,以便它引用与每个对象的标记属性对应的字符串值数组。
此示例使用destructuring来访问对象数组。然后,它使用数组的map()方法访问每个元素的标记属性,从而获得其字符串值。 map()的优点在于它在幕后执行迭代,使用户不必使用正确的逻辑手动编写循环 - 尽管在函数式编程语言中而不是使用迭代,递归是更容易被用于此目的。最后,重置对象的data属性的值以包含指定的字符串数组。