js遍历对象key,value

待我称王封你为后i 2024-03-26 15:25 128阅读 0赞

声明一个对象:

  1. let obj = {
  2. name: 'Kamen',
  3. age: '23',
  4. hobby: 'eat eat eat'
  5. }

方法一:转化为操作数组forEach遍历

遍历对象属性

  1. //遍历对象属性
  2. Object.keys(obj).forEach(key => {
  3. console.log(key)
  4. })

在这里插入图片描述
关于Object.keys()方法
Object.keys() 方法会返回一个由一个给定对象的自身可枚举属性组成的数组,数组中属性名的排列顺序和正常循环遍历该对象时返回的顺序一致。

例子

  1. // 简单数组
  2. const arr = ['a', 'b', 'c'];
  3. console.log(Object.keys(arr)); // console: ['0', '1', '2']
  4. // 类数组对象
  5. const obj = {
  6. 0: 'a', 1: 'b', 2: 'c' };
  7. console.log(Object.keys(obj)); // console: ['0', '1', '2']
  8. // 具有随机键顺序的类数组对象
  9. const anObj = {
  10. 100: 'a', 2: 'b', 7: 'c' };
  11. console.log(Object.keys(anObj)); // console: ['2', '7', '100']
  12. // getFoo 是一个不可枚举的属性
  13. const myObj = Object.create({
  14. }, {
  15. getFoo: {
  16. value() {
  17. return this.foo; }
  18. }
  19. });
  20. myObj.foo = 1;
  21. console.log(Object.keys(myObj)); // console: ['foo']

遍历对象属性值

  1. //遍历对象属性值
  2. Object.values(obj).forEach(val => {
  3. console.log(val)
  4. })

在这里插入图片描述
关于Object.values()方法
object .values()静态方法返回给定对象自己的可枚举字符串键属性值的数组。

例子

  1. const obj = {
  2. foo: "bar", baz: 42 };
  3. console.log(Object.values(obj)); // ['bar', 42]
  4. // Array-like object
  5. const arrayLikeObj1 = {
  6. 0: "a", 1: "b", 2: "c" };
  7. console.log(Object.values(arrayLikeObj1)); // ['a', 'b', 'c']
  8. // Array-like object with random key ordering
  9. // When using numeric keys, the values are returned in the keys' numerical order
  10. const arrayLikeObj2 = {
  11. 100: "a", 2: "b", 7: "c" };
  12. console.log(Object.values(arrayLikeObj2)); // ['b', 'c', 'a']
  13. // getFoo is a non-enumerable property
  14. const myObj = Object.create(
  15. {
  16. },
  17. {
  18. getFoo: {
  19. value() {
  20. return this.foo;
  21. },
  22. },
  23. },
  24. );
  25. myObj.foo = "bar";
  26. console.log(Object.values(myObj)); // ['bar']

方法二:for/in遍历

  1. for( let key in obj ){
  2. //遍历对象属性
  3. console.log(key)
  4. //遍历对象属性值
  5. console.log(obj[key])
  6. }

在这里插入图片描述
注意:该方法会继承原型链的所有属性,例如:

  1. Object.prototype.pet = 'open'
  2. for( let key in obj ){
  3. console.log(key)
  4. console.log(obj[key])
  5. }
  6. console.log(obj)

在这里插入图片描述
上述情况可以使用hasOwnProperty避免:

  1. Object.prototype.pet = 'open'
  2. for( let key in obj ){
  3. if (obj.hasOwnProperty(key) === true){
  4. console.log(key)
  5. console.log(obj[key])
  6. }
  7. }
  8. console.log(obj)

在这里插入图片描述

发表评论

表情:
评论列表 (有 0 条评论,128人围观)

还没有评论,来说两句吧...

相关阅读