定义一个对象,对象的键包含所有数据类型
const SymbolKey = Symbol('a')
const dict = {
[66]: 66,
"string": 'string',
[true]: true,
[undefined]: undefined,
[null]: null,
[BigInt(123)]: BigInt(123),
[function () { console.log("hello") }]: 'function value',
[{}]: 'object value',
[[]]: 'array value',
[SymbolKey]: 'symbol value',
__proto__: Object.prototype,
}
使用常规循环循环方法
for (let key in dict) {
console.log("key:", key, " value:", dict[key])
}
Object.keys(dict).forEach(key => {
console.log("key:", key, " value:", dict[key])
});
Object.entries(dict).forEach(([key, value]) => {
console.log("key:", key, " value:", value);
});
Object.getOwnPropertyNames(dict).forEach(key => {
console.log("key:", key, " value:", dict[key])
});
打印结果:
key: 66 value: 66
key: 123 value: 123n
key: string value: string
key: true value: true
key: undefined value: symbol value
key: null value: null
key: function () { console.log("hello") } value: function value
key: [object Object] value: object value
key: value: array value
可以看出除了对象的原型对象和Symbol其他数据类型都可以打印出来
// 获取Symbol
const symbolKey = Object.getOwnPropertySymbols(dict)
console.log(symbolKey, dict[symbolKey[0]]);
// 获取 __proto__
const protoKey = Object.getPrototypeOf(dict)
console.log(protoKey, dict.__proto__);
打印结果:
[ Symbol(a) ] symbol value
[Object: null prototype] {} [Object: null prototype] {}
遍历对象全部属性:
// 遍历对象可枚举和不可枚举属性
const getObjectKeys = (obj) => {
let keys = Object.keys(obj)
const symbolKeys = Object.getOwnPropertySymbols(dict)
keys.push(...symbolKeys)
const protoKey = Object.getPrototypeOf(dict)
keys.push(protoKey)
return keys
}
console.log(getObjectKeys(dict));
打印结果:
[
'66',
'123',
'string',
'true',
'undefined',
'null',
'function () { console.log("hello") }',
'[object Object]',
'',
Symbol(a),
[Object: null prototype] {}
]
标签:遍历,console,log,对象,Object,value,JS,dict,key From: https://www.cnblogs.com/zhuping580/p/18314605