码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • js对象扁平化:Javascript对象进行扁平化处理


    js对象扁平化的方法:

    1、使用 concat() 方法在

    2、 使用 flat() 方法

    3、使用用户定义的函数

    具体使用方法:

    1、使用 concat() 方法在

    此示例将设置一个包含数组对象、普通对象和嵌套对象的对象。我们将在方法和方法的帮助下展平整个对象。reduce()concat()

    Object.keys()将返回一个包含所有其他对象的数组,并将合并这些对象。concat()

    1. var object = { az: 90,
    2. 0: [1, 2, 3, 4],
    3. x:{
    4. a:'y',
    5. b:'z'
    6. }
    7. };
    8. result = Object.keys(object).reduce(function (value, key) {
    9. return value.concat(key, object[key]);
    10. }, []);
    11. console.log(result);

     输出:

     

    所有对象都平展在单个数组中,嵌套对象是该合并数组的成员。在输出中,您几乎无法区分先前的键值对。

    我们分离了键,并用值将它们连接起来。

    2、 使用 flat() 方法

    在这里,我们将观察一个类似的对象,以展平其组件。我们将使用该方法来平展主对象的各个对象的值。take_meflat()

    因此,我们只会得到值的扁平化版本。

    1. const flatten=(obj) => Object.values(obj).flat();
    2. const take_me = { x:[1,2,3],
    3. y:[4,5,6,7],
    4. z:{
    5. xx: 8,
    6. yy: 9
    7. }
    8. };
    9. console.log(flatten(take_me));

    输出:

     

    3、使用用户定义的函数

    用于检索平展对象的用户定义函数不基于任何内置属性或方法。一个简单的条件语句将决定如何在对象中设置键对值。result

    我们将检查对象的类型,如果它不是数组,我们将递归运行该函数。而且,该对象将采用简化的键值对。flattenresult

    代码栅栏可以更好地预览任务。

    1. let obj = {
    2. Company: "xyz",
    3. Address: "aaa",
    4. contact: 0987654,
    5. mentor: {
    6. HTML: "A",
    7. CSS: "B",
    8. JavaScript: "C"
    9. },
    10. abc : [1,2,3]
    11. };
    12. const flatten = (ob) => {
    13. let result = {};
    14. for (const i in ob) {
    15. if ((typeof ob[i]) === 'object' && !Array.isArray(ob[i])) {
    16. const temp = flatten(ob[i]);
    17. for (const j in temp) {
    18. result[j] = temp[j];
    19. }
    20. }
    21. else {
    22. result[i] = ob[i];
    23. }
    24. }
    25. return result;
    26. };
    27. console.log(flatten(obj));

    输出:

     

    资料:

  • 相关阅读:
    剑指 Offer 19. 正则表达式匹配
    Django内置函数详解Httprequest详解(模拟搜索/模拟用户登陆/模拟上传文件功能)
    用Three.js打造酷炫3D个人网站(含源码)
    贪心算法之最优装载问题
    数据平滑和离群值检测
    LLM ReAct: 将推理和行为相结合的通用范式 学习记录
    如何做好数据全生命周期管理,从哪几个方面做?_光点科技
    设计模式有哪些?
    arm day1(9.14)arm相关概念,RISC和CISC区别,数据类型约定,arm-v7架构和arm-v8架构,arm处理器工作模式
    子网划分
  • 原文地址:https://blog.csdn.net/qq_22182989/article/details/125496432
  • 最新文章
  • 沪漂五周年了:我越来越迷茫了
    Agentic Skill Routing 实战:别再把所有 Skill 塞进 AI Agent 上下文
    MySQL-Seconds_behind_master的精度误差
    [MAF预定义ChatClient中间件-03]CachingChatClient——利用缓存省钱省时间
    AI的至暗历史:从万众期待到被政府撤资,AI的两次死亡徘徊
    Agent OS :五种驯服不确定性的范式
    PortSwigger SQL注入LAB11
    数据库即时编译JIT
    [Begin]AI Learn Data Day 0
    深度学习进阶(二十七)现代 LLM 的核心架构设计其二:SwiGLU
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号