js选取(pick)和反选(reject)对象属性的方法

使用对象key value值分别对对象属性进行选择以及反选

<template>
  <div>
    <p>选择和反选对象属性</p>
  </div>
</template>
​
<script>
export default {
  created() {
    const row = {
      'accounts.id': 1,
      'client.name': 'John Doe',
      'bank.code': 'MDAKW213',
    }
    const table = [
      row,
      { 'accounts.id': 3, 'client.name': 'Steve Doe', 'bank.code': 'STV12JB' },
    ]
    // 取到了 client name
    this.pick(row, ['client.name']) // console.log(this.pick(row, ['client.name']))
    // 取到了一系列 client name
    table.map((row) => {
      this.pick(row, ['client.name']) // console.log(this.pick(row, ['client.name']))
    })
    // 反选方法
    console.log(this.reject({ a: 55, b: 66, c: 77, d: 88 }, ['a', 'c']))
    console.log(this.reject2({ a: 1, b: 2, c: 3, d: 4 }, ['a', 'c']))
  },
  methods: {
    // 选择属性
    pick(obj, keys) {
      return keys
        .map((k) => (k in obj ? { [k]: obj[k] } : {}))
        .reduce((res, o) => Object.assign(res, o), {})
    },
    // 反选属性 方法一
    reject(obj, keys) {
      return Object.keys(obj)
        .filter((k) => !keys.includes(k))
        .map((k) => ({ [k]: obj[k] }))
        .reduce((res, o) => Object.assign(res, o), {})
    },
    // 反选属性 方法二 利用pick
    reject2(obj, keys) {
      const vkeys = Object.keys(obj).filter((k) => !keys.includes(k))
      return this.pick(obj, vkeys)
    },
  },
}
</script>
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
JavaScript中的`try-catch`和`Promise.reject()`是处理错误的两种不同机制。 1. `try-catch`用于捕获和处理同步代码中的异常。通过将可能引发错误的代码块放在`try`语句块中,然后使用`catch`语句块来捕获并处理异常。例如: ```javascript try { // 可能引发错误的代码 throw new Error('Something went wrong!'); } catch (error) { // 处理错误 console.log(error); } ``` 在上述代码中,如果`throw new Error('Something went wrong!')`引发了错误,`catch`语句块将捕获到该错误,并执行相应的处理逻辑。 2. `Promise.reject()`用于在异步操作中返回一个被拒绝(rejected)的Promise对象,表示操作失败或出现错误。它通常与`Promise`的链式调用和异步操作一起使用。例如: ```javascript function fetchData() { return new Promise((resolve, reject) => { // 异步操作 // 如果出现错误,使用 reject() 返回一个被拒绝的 Promise reject(new Error('Failed to fetch data!')); }); } fetchData() .then(data => { // 处理成功的情况 console.log(data); }) .catch(error => { // 处理失败的情况 console.log(error); }); ``` 在上述代码中,如果异步操作失败或出现错误,Promise将被拒绝,并通过`.catch()`方法的回调函数捕获到错误,并执行相应的处理逻辑。 需要注意的是,`try-catch`适用于同步代码中的异常处理,而`Promise.reject()`适用于异步代码中的错误处理。在处理异步操作时,通常会使用`Promise`及其相关方法,以确保能够在操作完成后正确地处理成功和失败的情况。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值