遍历对象的方法

推荐使用Object.keys()先获取键值,再遍历键值获取对象(其他for..in..不再列举)

原因:是Object.keys()返回键值的数组,只包括对象自身的(不含继承的)所有可枚举属性(不含Symbol属性)

let OBJ = {
    firstLine: '粉身碎骨浑不怕,要留清白在人间',
    secondLine: '八脉会流入气海,意守一念力如山',
    thirdLine: '格物致知',
    forthLine: '田园将芜胡不归,既自以心为形役,奚惆怅而独悲',
    fifthLine: '实迷途其未远,觉今是而昨非',
}
Object.keys(OBJ).forEach(key => {
    console.log('OBJ[key]', OBJ[key])
})

// VM5910:2 OBJ[key] 粉身碎骨浑不怕,要留清白在人间
// VM5910:2 OBJ[key] 八脉会流入气海,意守一念力如山
// VM5910:2 OBJ[key] 格物致知
// VM5910:2 OBJ[key] 田园将芜胡不归,既自以心为形役,奚惆怅而独悲
// VM5910:2 OBJ[key] 实迷途其未远,觉今是而昨非
// undefined

 

最近有个奇怪的需求,要求展示某个对象所有的key,普通key之间用点连接,遇到数组用[i]连接,所有就有了下面这个方法:
let cb = (val, str) => { Object.keys(val).forEach(key => { let tmp = val[key] let strT = str // 数组 if (tmp && typeof tmp === 'object' && tmp.length) { let strTT = !strT ? key + '[i]' : strT + '.' + key + '[i]' cb(tmp[0], strTT) } else if (tmp && typeof tmp === 'object') { // 对象 let strTT = !strT ? key : strT + '.' + key cb(tmp, strTT) } else { let strTT = !strT ? key : strT + '.' + key arr.push({ value: strTT, bool: true }) } }) } cb(obj, '')
哈哈,不知道会不会有人也会遇到这样的需求哈....
下面这些地方是变量标识符,不要弄混了

 

 

 

posted @ 2020-07-02 16:32  老白也是白  阅读(268)  评论(0编辑  收藏  举报