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

    输出:

     

    资料:

  • 相关阅读:
    深度学习,从一维特性输入到多维特征输入引发的思考(未完成)
    【Git】git的安装与使用教程
    【无标题】
    OkHttp 根据服务器返回的的过期时间设置缓存
    awk命令的使用
    client-go学习(6)Informer
    使用Kubebuilder编写operator
    2310如何维护旧代码
    中级程序员——uniapp和小程序面试题
    QT 中map的使用
  • 原文地址:https://blog.csdn.net/qq_22182989/article/details/125496432