JavaScript操作Object的方法合集

壹、assign() 拷贝、合并

Object.assign() 方法将所有可枚举(Object.propertyIsEnumerable() 返回 true)的自有(Object.hasOwnProperty() 返回 true)属性从一个或多个源对象复制到目标对象,返回修改后的对象。

<script lang="ts">
export default defineComponent({
  setup() {
    const data = reactive({
      obj1: {
        name: 'Ect.End'
      },
      obj2: {
        sex: '男'
      },
      obj3: {
        age: 28,
        interest: 'sing'
      },
    })

    console.log('输出:', JSON.stringify(Object.assign(data.obj1, data.obj2))) // 输出: {"name":"Ect.End","sex":"男"}

    console.log('输出:', JSON.stringify(Object.assign(data.obj1, data.obj2, data.obj3))) // 输出: {"name":"Ect.End","sex":"男","age":28}

    // 复制对象  下面的输出值可以发现  Object.assign(target, ...sources)  只有目标对象target会发生变化,sources不受影响

    console.log(JSON.stringify(Object.assign({}, data.obj1))) // {"name":"Ect.End","sex":"男","age":28}

    console.log(JSON.stringify(Object.assign({}, data.obj2))) // {"sex":"男"}

    // 使用扩展运算符进行合并

    console.log('输出:', {...data.obj1, ...data.obj2, ...data.obj3}) // 输出: {name: 'Ect.End', sex: '男', age: 28, interest: 'sing'}

  }
})
</script>

贰、entries() 循环遍历

**Object.entries()**方法返回一个给定对象自身可枚举属性的键值对数组,其排列与使用 for...in 循环遍历该对象时返回的顺序一致(区别在于 for-in 循环还会枚举原型链中的属性)。

<script lang="ts">
export default defineComponent({
  setup() {
    const data = reactive({
      obj: {
        name: 'Ect.End',
        sex: '男',
        age: 28
      }
    })

    for (const [key, value] of Object.entries(data.obj)) {
      console.log('输出:', `${key}: ${value}`);
      // 输出: name: Ect.End
      // 输出: sex: 男
      // 输出: age: 28
    }

  }
})
</script>

叁、keys() 输出一个以可直接枚举的属性(key)的数组

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

<script lang="ts">
export default defineComponent({
  setup() {
    const data = reactive({
      obj: {
        name: 'Ect.End',
        sex: '男',
        age: 28
      }
    })

    console.log('输出:', Object.keys(data.obj)); // 输出: ['name', 'sex', 'age']

  }
})
</script>

肆、values() 输出一个以可直接枚举的属性值(value)的数组

Object.values() 方法返回一个给定对象自身的所有可枚举属性值的数组,值的顺序与使用 for...in 循环的顺序相同(区别在于 for-in 循环枚举原型链中的属性)。

<script lang="ts">
export default defineComponent({
  setup() {
    const data = reactive({
      obj: {
        name: 'Ect.End',
        sex: '男',
        age: 28
      }
    })

    console.log('输出:', Object.values(data.obj)); // 输出: ['Ect.End', '男', 28]

  }
})
</script>

伍、hasOwn() 属性是否存在

如果指定的对象自身有指定的属性,则静态方法 Object.hasOwn() 返回 true。如果属性是继承的或者不存在,该方法返回 false

<script lang="ts">
export default defineComponent({
  setup() {
    const data = reactive({
      obj: {
        name: 'Ect.End',
        sex: '男',
        age: 28
      }
    })

    console.log('输出:', Object.hasOwn(data.obj, 'name')); // 输出: true

    console.log('输出:', Object.hasOwn(data.obj, 'Ect.End')); // 输出: false

    console.log('输出:', Object.hasOwn(data.obj, 'age')); // 输出: true

  }
})
</script>

陆、is() 两个值是否为同一个值

Object.is() 方法判断两个值是否为同一个值。

<script lang="ts">
export default defineComponent({
  setup() {
    const data = reactive({
      obj: {
        name: 'Ect.End',
        sex: '男',
        age: 28
      },
      obj1: {
        name: 'Ect.End',
        sex: '男',
        age: 28
      }
    })

    console.log('输出:', Object.is(data.obj, data.obj1)); // 输出: false

    console.log('输出:', Object.is(1, 1)); // 输出: true

    console.log('输出:', Object.is('Ect.End', 'Ect.End')); // 输出: true

    console.log('输出:', Object.is('Ect.End', '男')); // 输出: false

  }
})
</script>

纯属学习记录。我是Etc.End,如果文章对你有帮助,记得帮我点个赞😄 😆 😊 😃 😏 

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Etc.End

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

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

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

打赏作者

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

抵扣说明:

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

余额充值