我有一个链接到包含嵌套对象的文章的标签数组:
[ {id: 1, name: {"en": "Tag 1" }}, {id: 2, name: {"en": "Tag 2" }}, {id: 3, name: {"en": "Tag 3" }} ]
我想创建一个新数组,简单地显示标记名称是单个数组:
[Tag 1, Tag 2, Tag 3]
我创建了以下方法:
var tagNames = [];
this.article.tags.forEach(value => {
tagNames.push(Object.values(value["name"]));
});
console.log(tagNames);
但是,这会创建一个数组数组:
[[Tag 1],[Tag 2],[Tag 3]]
如何获得所需的单个阵列?
答案 0 :(得分:0)
您可以替换:
tagNames.push(Object.values(value["name"]));
通过
tagNames = [...tagNames,...Object.values(value["name"])];
答案 1 :(得分:0)
您可以使用map()来做到这一点。
let data = [ {id: 1, name: {"en": "Tag 1" }}, {id: 2, name: {"en": "Tag 2" }}, {id: 3, name: {"en": "Tag 3" }} ];
let tags = data.map(item => item.name.en);
console.log(tags);
Object.values()创建一个值数组。因此,您可以在代码中使用flat()将结果转换为所需的格式。
let data = [ {id: 1, name: {"en": "Tag 1" }}, {id: 2, name: {"en": "Tag 2" }}, {id: 3, name: {"en": "Tag 3" }} ];
var tagNames = [];
data.forEach(value => {
tagNames.push(Object.values(value["name"]));
});
console.log(tagNames.flat());
答案 2 :(得分:0)
您可以解构对象并仅将en
用于映射。
var data = [{ id: 1, name: { en: "Tag 1" } }, { id: 2, name: { en: "Tag 2" } }, { id: 3, name: { en: "Tag 3" } }],
result = data.map(({ name: { en } }) => en);
console.log(result);