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

时间:2020-02-24 21:23:03

标签: javascript arrays string object extraction

说我有以下数据集:

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

这可能吗?如果我的用语不好,请原谅我。

4 个答案:

答案 0 :(得分:1)

应该不太难。尝试使用Javascript的headers = {'Content-Type': 'application/x-www-form-urlencoded'} r = requests.post(URL, data=params, headers=headers) 函数...

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);

请参阅JSBIN上的代码。 Map会传回函式的结果,以进行阵列的迭代。签出Mozilla Developer Network Docs

答案 1 :(得分:0)

您可以这样做

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

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

答案 2 :(得分:0)

您可以使用map方法为art.fields数组中的每个项目计算一个值。

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 ? o.text[0].spaces : '';
});

console.log(newArray);

答案 3 :(得分:0)

如果您的文本数组将有多个空格,则应循环遍历并添加如下所示的空格值:

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 res = art.fields.reduce((ini, curr, idx) => {
  if (curr.text) {
    curr.text.forEach(arr => {
      arr.spaces && ini.push(arr.spaces);
    });
  } else {
    ini.push('');
  }
  return ini;
}, [])
console.log(res);