如何获取存储在 Array 中的对象的键

小伙子

让我们为版主添加前缀,这个问题与嵌套的 Key 无关。这是关于对象中的数组,以及如何查看它是仅包含值的简单数组还是包含对象的数组以及如何获取这些对象的键。我包含了解析样本并检测 2 个数组的代码片段。如果数组是只有一个值列表的简单数组,我正在寻找的是只返回数组的名称。如果数组是对象数组,我想在数组中获取该对象的键。

obj = {
            DocId: "email_campaign::3ed76589-4063-49f6-a21e-9ca16981d102",
            history: {
                created_by: "",
                created_on: "",
                update_on: "",
                updated_by: ""
            },
            librarys :[{id: 1, name : 'Lib 1'},{ id: 2, name: 'Lib 2'}],
            status: "Active",
            subject: "Test 1 Subject",
            summary: "",
            tags: ['one', 'two'],
            template_id: ""
        };

const keyify = (obj, prefix = '') => 
  Object.keys(obj).reduce((res, el) => {
    if( Array.isArray(obj[el]) ) {
      // Here needs to go the Array Part
      console.log(el + ' is Array')
      return [...res, el];
    } else if( typeof obj[el] === 'object' && obj[el] !== null ) {
      return [...res, ...keyify(obj[el], prefix + el + '.')];
    } else {
      return [...res, el];
    }
  }, []);
  
  
const output = keyify(obj);

console.log(output);

安迪

假设您希望数组名称的前缀类似于对象的现有前缀,您可以尝试以下操作:

const keyify = (obj, prefix = "") =>
  Object.keys(obj).reduce((res, el) => {
    const elDisplayName = `${prefix}${el}`;
    if (Array.isArray(obj[el])) {
      const objectsInArray = obj[el].filter(el => typeof el === "object");
      if (objectsInArray.length > 0) {
        let objectKeys = [];
        objectsInArray.map(object => {
          objectKeys = objectKeys.concat(keyify(object, prefix + el + "."))
        });
        return [...res, ...new Set(objectKeys)];   
      }
      return [...res, elDisplayName];
    } else if (typeof obj[el] === "object" && obj[el] !== null) {
      return [...res, ...keyify(obj[el], prefix + el + ".")];
    } else {
      return [...res, elDisplayName];
    }
  }, []);

这个解决方案有很多注意事项,比如假设一个数组只有一个对象,它将只包含对象。但这应该让您开始检测数组中对象的存在。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

使用键在JSonPath中声明Array对象

从对象数组中获取键:Javascript

根据javascript中的对象键获取值

如何从Javascript中的对象列表中获取键的值?

获取javascript对象中特定键的总和

如何从Observable Array嵌套对象中获取价值

如何获取存储在localStorage中的对象的值?

在TypeScript中获取对象联合的键

如何从一键具有Array的对象数组中获取不同的值并计算JavaScript?

如何获取存储在AWS Bucket中的对象的存储类

无法通过Firefox中的键获取存储的对象值

如何使用JavaScript中的“ for in”循环获取存储在对象中的键的数组值

如何基于最大键(日期是键)获取对象中的值

如何获取对象中的键

从代码中的 Flow 对象类型获取键

如何从对象中获取无序的键数组

Javascript 从对象中获取键和值

如何在 Microsoft Flow 中获取 JSON 中的对象键

如何从对象值中获取键?

如何获取存储在列表中的对象的属性

如何从Clojure Array中的键获取特定值?

如何从对象中获取特定键?(JS)

setstate object:{array:[]} in reactjs 如何在状态对象**中的数组中添加**键和值?

快速从 Array 中获取所有键

如何获取存储在该数组 'my_array' Cypress 中的值?

如何从对象中的所有键获取特定值并将其存储在数组中?

如何通过Typescript中的键获取数组中对象的值

如何获取数组中对象的键?

如何从对象中的子项获取父键