微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

从父对象中的内部对象推送键和值

如何解决从父对象中的内部对象推送键和值

尽管标题看起来很难,但让我举一个简单的例子。 我有一个对象。

import seaborn as sns

x = [17.56,162.52,172.58,160.82,182.14,165.86,242.06,135.76,122.86,230.22,208.66,271.36,122.68,188.42,171.82,102.30,196.40,107.38,192.35,179.66,173.30,254.66,176.12,75.365,135.78,103.66,183.50,166.08,207.66,146.22,151.19,172.20,103.41,133.93,186.48]
sns.histplot(x,kde=True)

我的目标是将数组的值推送给对象。

{
  name:"Ethan"
  pets:{cat:"joline",dog:"Momo",bird"Mimi"}
}

这个问题很简单,我相信你可以巧妙地解决它,谢谢。

解决方法

执行此操作的简单方法是使用扩展运算符组合 pets 对象和其他属性,然后从结果中删除 pets

const data = {
  name:"Ethan",pets:{cat:"joline",dog:"Momo",bird:"Mimi"}
}

const res = {...data,...data.pets};
delete res.pets;
console.log(res);

如果你想以函数式的方式来做,你可以使用以下方法。

  • 将原始元素包装在一个数组中。
  • 在其上应用 map
  • 从对象中解构 pets 并将其余属性存储在其他变量中。
  • 返回一个新对象,您在其中展开 rest 对象和 pets

const data = {
  name:"Ethan",bird:"Mimi"}
}

const res = [data].map(({pets,...rest}) => ({...rest,...pets}))[0]
console.log(res)

,

遍历对象中的元素和值。并将值传播到返回对象中

const data = {
  name: "Ethan",pets: {
    cat: "joline",dog: "Momo",bird: "Mimi"
  }
};

function flatten(data) {
  let result = {};

  for (const key in data) {
    const value = data[key];
    
    if (typeof value != 'object') result[key] = value;
    else result = { ...result,... flatten(value)}
  }

  return result;
}

console.log(flatten(data));

,

使用 destructuring 获得所需结果的最简单、最干净的方法。

const obj = {
  name: "Ethan",pets: { cat: "joline",bird: "Mimi" },};

const { name,pets } = obj;
const result = { name,...pets };
console.log(result);

,

正如其他人所说,这对于对象解构来说很简单。我认为当你使用参数解构时它是最干净的。所以像这样的简单函数应该可以做到:

const promotePets = ({pets,...rest}) => 
  ({...rest,...pets})

const obj = {name: "Ethan",bird: "Mimi" }};

console .log (promotePets (obj))

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。