JavaScript选取(picking)和反选(rejecting)对象的属性方法

发布时间 - 2026-01-11 02:48:53    点击率:

有时候我们需要将一个对象的某些属性选取出来,比方说我们有一个用数组表示的数据库表,我们需要一些函数来 select (选取) 几个字段:

function pick(obj, keys) {
  return keys.map(k => k in obj ? {[k]: obj[k]} : {})
        .reduce((res, o) => Object.assign(res, o), {});
}
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'}
];
pick(row, ['client.name']); // 取到了 client name
table.map(row => pick(row, ['client.name'])); // 取到了一系列 client name

在 pick 函数中用到了一点小技巧。首先,我们用 map 遍历了键名数组(keys), 每次都会返回一个包含当前键名(key)的对象(如果在目标对象(obj)中没有当前键名,就会返回空对象)。然后我们用 reduce 把返回的所有单个键-值对象和合并到一个对象中。

但是,如果我们想反选( reject )属性/键名呢?改造一下我们的函数就好了:

function 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
function reject(obj, keys) {
  const vkeys = Object.keys(obj)
    .filter(k => !keys.includes(k));
  return pick(obj, vkeys);
}
reject({a: 2, b: 3, c: 4}, ['a', 'b']); // => {c: 4}

总结

以上所述是小编给大家介绍的JavaScript选取(picking)和反选(rejecting)对象的属性方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!


# js  # 选取反选  # picking  # rejecting  # JavaScript实现全选取消效果  # JS获得选取checkbox整行数据的方法  # js选取多个或单个元素的实现代码(用class)  # javascript下兼容firefox选取textarea文本的代码  # javascript实现鼠标选取拖动或Ctrl选取拖动  # React实现表格选取  # 键名  # 小编  # 几个  # 就会  # 在此  # 遍历  # 给大家  # 所述  # 给我留言  # 小技巧  # 感谢大家  # 比方说  # 有一个  # 象中  # 疑问请  # 有任何  # 并到  # 就好了  # gt  # map 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 零服务器AI建站解决方案:快速部署与云端平台低成本实践  重庆市网站制作公司,重庆招聘网站哪个好?  Gemini手机端怎么发图片_Gemini手机端发图方法【步骤】  b2c电商网站制作流程,b2c水平综合的电商平台?  Laravel策略(Policy)如何控制权限_Laravel Gates与Policies实现用户授权  iOS中将个别页面强制横屏其他页面竖屏  详解vue.js组件化开发实践  西安专业网站制作公司有哪些,陕西省建行官方网站?  如何用免费手机建站系统零基础打造专业网站?  潮流网站制作头像软件下载,适合母子的网名有哪些?  LinuxCD持续部署教程_自动发布与回滚机制  如何确保西部建站助手FTP传输的安全性?  如何自定义safari浏览器工具栏?个性化设置safari浏览器界面教程【技巧】  公司网站制作需要多少钱,找人做公司网站需要多少钱?  如何用VPS主机快速搭建个人网站?  怎样使用JSON进行数据交换_它有什么限制  Laravel如何使用Socialite实现第三方登录?(微信/GitHub示例)  Laravel如何实现邮箱地址验证功能_Laravel邮件验证流程与配置  如何在阿里云通过域名搭建网站?  网页设计与网站制作内容,怎样注册网站?  Bootstrap整体框架之CSS12栅格系统  微博html5版本怎么弄发语音微博_语音录制入口及时长限制操作【教程】  iOS发送验证码倒计时应用  如何制作一个表白网站视频,关于勇敢表白的小标题?  Laravel Vite是做什么的_Laravel前端资源打包工具Vite配置与使用  Python图片处理进阶教程_Pillow滤镜与图像增强  电商网站制作价格怎么算,网上拍卖流程以及规则?  Laravel distinct去重查询_Laravel Eloquent去重方法  详解jQuery中的事件  如何用已有域名快速搭建网站?  Laravel如何创建和注册中间件_Laravel中间件编写与应用流程  Laravel怎么实现软删除SoftDeletes_Laravel模型回收站功能与数据恢复【步骤】  Android滚轮选择时间控件使用详解  Laravel如何使用Blade组件和插槽?(Component代码示例)  Laravel如何实现API版本控制_Laravel API版本化路由设计策略  node.js报错:Cannot find module 'ejs'的解决办法  如何在 Python 中将列表项按字母顺序编号(a.、b.、c. …)  简历在线制作网站免费版,如何创建个人简历?  Windows家庭版如何开启组策略(gpedit.msc)?(安装方法)  Linux网络带宽限制_tc配置实践解析【教程】  无锡营销型网站制作公司,无锡网选车牌流程?  南京网站制作费用,南京远驱官方网站?  如何用花生壳三步快速搭建专属网站?  常州企业网站制作公司,全国继续教育网怎么登录?  Win11怎样安装网易有道词典_Win11安装词典教程【步骤】  VIVO手机上del键无效OnKeyListener不响应的原因及解决方法  如何在局域网内绑定自建网站域名?  详解Oracle修改字段类型方法总结  如何在云服务器上快速搭建个人网站?  如何在Windows环境下新建FTP站点并设置权限?