嵌套对象和数组解构 [英] Nested object and array destructuring

查看:326
本文介绍了嵌套对象和数组解构的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述



我的对象包括一个也包含对象的嵌套数组,从这个数组我只会喜欢几个字段。



我可以做嵌套对象的破坏,罚款,数组解析不错,但不在一起?



我目前的尝试如下所示:

  var data = {
title:title1,
bar:asdf,
innerData:[
{
title:inner-title1,
foo:asdf
},
{
title:inner-title2,
foo:asdf
}
]
};

var {title,innerData:[{title}]} = data;

console.log(title); $($ var $ title)of $ data $ {

} {
console.log(title);
}

但是收到一条消息说 innerData没有定义。



我想要的结果可能是:

  {
title:title1,
innerData:[
{
title:inner-title1
},
{
标题:inner-title2
}
]
};


解决方案

您可以将变量名称调整为除定义 innerData ;使用 .map() JSON.stringify() JSON.parse()过滤标题属性从 innerData 对象

  var {title,titles = data.innerData.map(o =>({title:o.title}))} = data; 

维护 innerData 可以使用的变量名对象的数组解构

  var [title,innerData] = [data.title,data.innerData.map(o => ({标题:o.title}))]; 

使用 JSON.stringify() JSON.parse()

  var [title,innerData] = JSON。解析(JSON.stringify([data.title,data.innerData],[title])); 






编辑



如果要求是在数据中创建一个包含所有标题属性的数组,则可以使用 JSON.stringify() with replacer array set to [title] JSON.parse ),spread元素



  var data =标题:title1,bar:asdf,innerData:[{title:inner-title1,foo:asdf},{title:inner-title2,foo:asdf}]}; var innerData = JSON.parse(JSON.stringify([data,... data.innerData],[title]))console.log(innerData);  

/ div>


I am trying to convert an object to a leaner version using destructuring.

My object includes a nested array which also contains objects, from this array I would only like a few fields.

I can do the nested object destructuring fine, and the array destructuring fine but not together?

My current try looks like this:

var data = {
    title: "title1",
    bar: "asdf",
    innerData: [
       {
        title: "inner-title1",
        foo: "asdf"
       },
       {
        title: "inner-title2",
        foo: "asdf"
       }
    ]
};

var { title, innerData: [ { title} ] } = data;

console.log(title);

for (var { title} of innerData) {
  console.log(title);
}

But get a message saying innerData is not defined.

The outcome I would like might be:

{
    title: "title1",
    innerData: [
       {
        title: "inner-title1"
       },
       {
        title: "inner-title2"
       }
    ]
};

解决方案

You can adjust the variable name to an identifier other than defined innerData ; use .map() or JSON.stringify(), JSON.parse() to filter title property from innerData objects

var {title, titles = data.innerData.map(o => ({title:o.title}))} = data;

to maintain innerData variable name you can use array destructuring of object

var [title, innerData] = [data.title, data.innerData.map(o => ({title:o.title}))];

using JSON.stringify(), JSON.parse()

var [title, innerData] = JSON.parse(JSON.stringify([data.title, data.innerData], ["title"]));


Edit

If requirement is to create an array containing all title properties within data you can use JSON.stringify() with replacer array set to ["title"], JSON.parse(), spread element

var data = {
    title: "title1",
    bar: "asdf",
    innerData: [
       {
        title: "inner-title1",
        foo: "asdf"
       },
       {
        title: "inner-title2",
        foo: "asdf"
       }
    ]
};

var innerData = JSON.parse(JSON.stringify([data, ...data.innerData], ["title"]))
                                                                      
console.log(innerData);

这篇关于嵌套对象和数组解构的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆