js中遍历枚举类型

首先声明一个js的枚举变量:

/**
 * RH血型枚举类
 * @type {{P: string, U: string, N: string}}
 */
var RHXueXing = {
    P: '阳性+(P)',
    N: '阴性-(N)',
    U: '未知(U)'
}

声明一个function对这个枚举变量进行遍历:

/**
 * 遍历枚举类
 */
function iterEnum() {
    for (let key in RHXueXing) {
        console.log("(key:" + key + ",value:" + RHXueXing[key] + ")");
    }
}

运行结果:

(key:P,value:阳性+(P))
(key:N,value:阴性-(N))
(key:U,value:未知(U))
JavaScript中,遍历对象可以通过多种方法实现,这些方法各有特点。以下是几种常见的遍历对象属性的方式: 1. `for...in` 循环:这是最常用的遍历对象属性的方法。它会遍历对象自身及原型链上所有可枚举的属性。每次迭代会将属性名赋值给循环变量。 ```javascript var obj = { a: 1, b: 2, c: 3 }; for (var prop in obj) { if (obj.hasOwnProperty(prop)) { console.log(prop + ' = ' + obj[prop]); } } ``` 2. `Object.keys()` 方法:这个方法会返回一个包含对象所有自身可枚举属性的数组。然后可以通过数组方法来遍历这些属性。 ```javascript var obj = { a: 1, b: 2, c: 3 }; Object.keys(obj).forEach(function(key) { console.log(key + ' = ' + obj[key]); }); ``` 3. `Object.getOwnPropertyNames()` 方法:与 `Object.keys()` 类似,但它返回的是对象所有自身属性的数组,无论它们是否可枚举。 ```javascript var obj = { a: 1, b: 2, c: 3 }; Object.getOwnPropertyNames(obj).forEach(function(key) { console.log(key + ' = ' + obj[key]); }); ``` 4. `for...of` 循环结合 `Object.entries()` 方法:`Object.entries()` 返回一个数组,其元素是对象自身可枚举属性的键值对数组。`for...of` 循环可以直接遍历这种数组。 ```javascript var obj = { a: 1, b: 2, c: 3 }; for (var [key, value] of Object.entries(obj)) { console.log(key + ' = ' + value); } ``` 5. 使用 `Map` 和 `WeakMap`:如果需要避免常规对象属性遍历中的问题,比如忽略符号类型的键、对象引用和原型链上的属性,可以使用 `Map` 和 `WeakMap`。 ```javascript var map = new Map(Object.entries({ a: 1, b: 2, c: 3 })); for (var [key, value] of map) { console.log(key + ' = ' + value); } ``` 需要注意的是,以上方法中 `for...in` 循环可能会遍历到原型链上的属性,除非你明确检查属性是否为对象自有属性。`Object.keys()` 和 `Object.getOwnPropertyNames()` 只遍历对象自身的属性,不会遍历原型链上的属性。选择哪种方法取决于你的具体需求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Coder-文小白

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值