首页 > 其他分享 >写一个方法遍历指定对象的所有属性

写一个方法遍历指定对象的所有属性

时间:2024-12-07 09:12:26浏览次数:7  
标签:遍历 const name Object 指定 key obj 属性

function enumerateProperties(obj) {
  const properties = [];

  for (const key in obj) {
    if (obj.hasOwnProperty(key)) { // 过滤掉继承的属性
      properties.push({
        name: key,
        value: obj[key]
      });
    }
  }

  return properties;
}


// 使用示例:
const myObject = {
  name: "John Doe",
  age: 30,
  city: "New York",
  greet: function() {
    console.log("Hello!");
  }
};

const properties = enumerateProperties(myObject);

// 打印属性名和值
for (const property of properties) {
  console.log(`${property.name}: ${property.value}`);
}

// 或转换成其他格式,例如表格:
console.table(properties);


// 更简洁的写法,使用Object.entries() (ES2017+)
function enumeratePropertiesES2017(obj) {
  return Object.entries(obj).map(([key, value]) => {
    return { name: key, value: value };
  });
}

const propertiesES2017 = enumeratePropertiesES2017(myObject);
console.table(propertiesES2017);



//  如果只需要属性名,可以使用 Object.keys()
const propertyNames = Object.keys(myObject);
console.log(propertyNames); // 输出: ['name', 'age', 'city', 'greet']


// 如果只需要属性值,可以使用 Object.values() (ES2017+)
const propertyValues = Object.values(myObject);
console.log(propertyValues); // 输出: ['John Doe', 30, 'New York', ƒ]


//  Reflect.ownKeys() 可以获取所有自身属性,包括 Symbol 属性 (ES2015+)
const allOwnKeys = Reflect.ownKeys(myObject);
console.log(allOwnKeys); // 输出: ['name', 'age', 'city', 'greet'] (如果对象有Symbol属性,也会包含在内)

方法解释:

  • enumerateProperties(obj):

    • 使用 for...in 循环遍历对象的所有可枚举属性。
    • 使用 hasOwnProperty(key) 方法检查属性是否为对象自身属性,而不是继承自原型链的属性。 这很重要,可以避免遍历到不期望的属性。
    • 将属性名和值存储在一个数组中,每个元素是一个包含 namevalue 属性的对象。
  • enumeratePropertiesES2017(obj):

    • 使用 Object.entries() 获取一个包含键值对的数组。
    • 使用 map() 方法将键值对数组转换为包含 namevalue 属性的对象数组。 这种方法更简洁。
  • Object.keys(obj): 直接返回一个包含所有自身可枚举属性名的数组。

  • Object.values(obj): 直接返回一个包含所有自身可枚举属性值的数组。

  • Reflect.ownKeys(obj): 返回一个包含所有自身属性的数组,包括 Symbol 属性和不可枚举属性。

选择哪种方法取决于你的需求:

  • 想要所有自身属性的名称和值,使用 enumeratePropertiesenumeratePropertiesES2017
  • 只需要属性名,使用 Object.keys
  • 只需要属性值,使用 Object.values
  • 需要所有自身属性,包括 Symbol,使用 Reflect.ownKeys

这个例子提供了多种遍历对象属性的方法,并解释了每种方法的用途和区别,希望能帮助你更好地理解和使用它们。 选择哪种方法取决于你的具体需求。

标签:遍历,const,name,Object,指定,key,obj,属性
From: https://www.cnblogs.com/ai888/p/18591723

相关文章

  • CSS 一些个人不常用属性总结
    1.滚动捕获在元素中滚动不会在中间停止一定会停在元素前方后或后方-需要在父元素中设置 scroll-snap-type:none|[x|y|block|inline|both][mandatory|proximity]  eg:  scroll-snap-type:xmandatory; 即时在X轴开启强制捕获......
  • powershell遍历注册dll
    #设置要遍历的根文件夹路径,你可以根据实际情况修改这个路径$rootFolder="C:\script\dlls"#获取该文件夹及其子文件夹下所有的.dll文件$dllFiles=Get-ChildItem-Path$rootFolder-Filter"*.dll"-Recurse#遍历每个找到的.dll文件并尝试注册foreach($dllFilein$dllFi......
  • CSS3——transform属性
    一、前言transform属性是CSS3中新增的一种非常强大的属性,它允许你旋转、缩放、倾斜或平移给定元素。这是通过修改CSS视觉格式化模型的坐标空间实现的。接下来就让我们一起学习transform属性二、transfrom:translate;位移,可以改变元素的位置,translateX让元素沿X轴......
  • transfrom属性案例
    一、前言上一篇文章我们一起学习了transform熟悉,这篇文章就让我们来写一些transform属性的相关案例,让我们能更加熟练地使用transform如果有小伙伴不了解transform属性的可以阅读上一篇文章(https://blog.csdn.net/CYX_COMnn/article/details/144249036?spm=1001.2014.30......
  • Linux学习(1)---文件属性和基本权限理解
    目录一.Linux文件的属性二.Linux用户权限分类三.文件权限的查询与修改1.修改用户的权限1).一般法2).8进制法2.修改所属组和所属者3.如何在创建文件权限预分配在学习linux的时候,我们用ll命令显示文件的详情信息,难免会发现文件名前面会有一大堆其它的字符,那么这些字......
  • 数据结构——图(遍历,最小生成树,最短路径)
    目录一.图的基本概念二.图的存储结构1.邻接矩阵2.邻接表三.图的遍历1.图的广度优先遍历2.图的深度优先遍历四.最小生成树1.Kruskal算法2.Prim算法五.最短路径1.单源最短路径--Dijkstra算法2.单源最短路径--Bellman-Ford算法3.多源最短路径--Floyd-Warshall算法......
  • 二叉树遍历
    [Algo]二叉树遍历二叉树节点类型定义:structBinaryTreeNode{intval;BinaryTreeNode*left;BinaryTreeNode*right;BinaryTreeNode(intx):val(x),left(nullptr),right(nullptr){}};1.前序遍历//1.非递归前序遍历二叉树//(1)弹出栈顶(2)......
  • 举例说明与打印有关的属性有哪些?
    前端开发中,与打印相关的属性有很多,它们可以控制打印页面的样式和内容。以下是一些常见的例子,并根据功能进行分类:1.页面尺寸和方向:size:控制纸张大小。一些常见的值包括A4,A3,letter,legal等。也可以使用自定义尺寸,例如8.5in11in(英寸)或210mm297mm(毫米)。......
  • 请写出font属性的快捷写法
    font属性的快捷写法可以同时设置多个值,顺序如下,其中用斜体标注的属性是可选的:font:*font-style**font-variant**font-weight**font-stretch**font-size[/line-height]**font-family*;解释一下各个属性:font-style:(可选)字体的样式,例如normal,italic,oblique。f......
  • 提交本地代码到git指定仓库
    1、找到本地代码的文件夹,在文件夹中右键鼠标,选择GitBash(前提是已经安装了Git) 2、执行以下命令 用来初始化文件 使用命令后 会出现.git文件gitinit3、指定源仓库地址  gitremoteaddoriginhttps://gitee.com/xxxx/yxxxx.git4、将本地项目设置为可提交状......