繁体   English   中英

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

[英]How do I extract an object(array) from an array of objects?

假设我有以下数据集:

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'}
        ]},
    ]};

我想从“空格”属性中提取一个新对象(数组)。 除此之外,我需要用空白值标识那些没有与它们关联的“空格”属性的“标题”对象。

我想以这样的方式结束:

newArray = ['', '1', '', '', '2']

这可能吗? 如果我的术语不是很好,请原谅我。 新来的。

应该不会太难。 试试 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 开发者网络文档

您可以使用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);

你可以做这样的事情

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM