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站点并设置权限?

