如何从对象数组中提取对象(数组)?

问题描述 投票:0回答:3

说我有以下数据集:

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']

这可能吗?如果我的术语不好,请原谅我。此为新功能。

javascript arrays string object extraction
3个回答
0
投票

您可以做这样的事情

const newArr = art.fields.map(space => {
  return {...space.text}
});

所以我假设您想返回一个包含文本数组对象的新数组


0
投票

应该不难。尝试使用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


0
投票

您可以使用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);
© www.soinside.com 2019 - 2024. All rights reserved.