说我有以下数据集:
const art = {
'fields': [
{title:'Title 1'},
{'text': [
{spaces: '1'}, {link: 'This is a link'}, {mouse: 'Yes'}
]},
{title: 'Title 2'},
{title:'Title 3'},
{'text': [
{spaces: '2'}, {link: 'This is a different link'}, {mouse: 'No'}
]},
]};
我想从“ spaces”属性中提取一个新的对象(数组)。除此之外,我需要用空白值来标识那些没有“ spaces”属性的“ title”对象。
我想结束这样的事情:
newArray = ['', '1', '', '', '2']
这可能吗?如果我的术语不好,请原谅我。此为新功能。
您可以做这样的事情
const newArr = art.fields.map(space => {
return {...space.text}
});
所以我假设您想返回一个包含文本数组对象的新数组
应该不难。尝试使用Javascript的map()
函数...
const art = {
'fields': [
{title:'Title 1'},
{'text': [
{spaces: '1'}, {link: 'This is a link'}, {mouse: 'Yes'}
]},
{title: 'Title 2'},
{title:'Title 3'},
{'text': [
{spaces: '2'}, {link: 'This is a different link'}, {mouse: 'No'}
]},
]};
const spaces = art.fields.map(function(field) {
if(field.text) {
return field.text[0].spaces;
}
return '';
});
console.log("Spaces?");
console.log(spaces);
以及结果...
"Spaces?"
["", "1", "", "", "2"]
请参见JSBIN上的代码。 Map返回函数的结果以进行数组迭代。签出Mozilla Developer Network Docs。
您可以使用map
方法为art.fields
数组中的每个项目计算一个值。
一个对象不能只包含一个字符串,所以我在每个对象中都设置了一个属性,使得结果看起来像这样:
[ { spaces: '' }, { spaces: '1' }, { spaces: '' }, { spaces: '' }, { spaces: '2' } ]
const art = {
'fields': [
{title:'Title 1'},
{'text': [
{spaces: '1'}, {link: 'This is a link'}, {mouse: 'Yes'}
]},
{title: 'Title 2'},
{title:'Title 3'},
{'text': [
{spaces: '2'}, {link: 'This is a different link'}, {mouse: 'No'}
]},
]};
var newArray = art.fields.map(function(o){
return 'text' in o ? { spaces: o.text[0].spaces} : { spaces: '' };
});
console.log(newArray);