JavaScript选取(picking)和反选(rejecting)对象的属性方
在JavaScript中,对象属性的选取和反选是常见的操作。对于需要从复杂对象中选取特定属性的朋友,这里有一些参考资料供大家参考。
让我们了解一下如何选取对象的属性。想象一下,我们有一个表示数据库表的数组,每个元素都是一个对象,包含多个字段。我们希望仅获取某些字段。这时,我们可以使用“选取”功能。
例如,我们有一个对象`row`,它包含一些嵌套的属性,如'aounts.id','client.name'和'bank.code'。如果我们只想获取'client.name'这个属性,我们可以使用`pick`函数:
```javascript
function pick(obj, keys) {
return keys.map(k => (k in obj ? {[k]: obj[k]} : {})).reduce((res, o) => Object.assign(res, o), {});
}
const row = { 'aounts.id': 1, 'client.name': 'John Doe', 'bank.code': 'MDAKW213' };
pick(row, ['client.name']); // 输出:{ client.name: 'John Doe' }
```
在这个`pick`函数中,我们遍历了键名数组`keys`,如果目标对象`obj`中有这个键名,就返回一个新的对象,其中包含这个键名和对应的值。如果没有,就返回一个空对象。然后我们把所有这些单个键-值对合并到一个对象中。
接下来,如果我们想反选,也就是排除某些属性,我们可以使用`reject`函数。这个函数会过滤掉我们不想包含的属性:
```javascript
function reject(obj, keys) {
return Object.keys(obj)
.filter(k => !keyscludes(k)) // 过滤掉不需要的属性
.map(k => ({[k]: obj[k]})) // 创建新的对象只包含过滤后的属性
.reduce((res, o) => Object.assign(res, o), {}); // 将所有对象合并成一个新的对象
}
// 或者我们可以利用之前写的 pick 函数来实现 reject 功能
function reject(obj, keys) {
const vkeys = Object.keys(obj).filter(k => !keyscludes(k)); // 获取不包含指定键名的键数组
return pick(obj, vkeys); // 使用 pick 函数返回不包含指定键名的对象
}
reject({a: 2, b: 3, c: 4}, ['a', 'b']); // 输出:{c: 4}
```
在这个例子中,我们从对象`obj`中排除了键名在数组`keys`中的属性,得到了一个新的对象,只包含我们想要保留的属性。这种方式非常灵活,可以方便地处理复杂的对象和嵌套属性。在大数据处理中非常实用。以上就是长沙网络推广给大家介绍的JavaScript选取和反选对象的属性方法,希望对大家有所帮助。如果大家有任何疑问或建议,欢迎留言讨论,长沙网络推广会及时回复大家的支持。如果您喜欢这篇文章并希望了解更多关于编程和网络推广的知识,请关注我们的博客或者访问我们的网站,我们将不断更新的技术和实用技巧。在此也感谢大家对狼蚁SEO网站的支持和关注!
编程语言
- JavaScript选取(picking)和反选(rejecting)对象的属性方
- PHP大神的十大优良习惯
- 浅谈vue自定义全局组件并通过全局方法 Vue.use()
- SQL Server配置管理器无法连接到WMI提供程序
- asp实现的可以提醒生日的几种方法附代码
- Swiper 4.x 使用方法(移动端网站的内容触摸滑动)
- vue项目国际化vue-i18n的安装使用教程
- 破解.net程序(dll文件)编译和反编译方法
- 微信小程序按钮点击跳转页面详解
- JSP实现从不同服务器上下载文件的方法
- vue路由嵌套的SPA实现步骤
- JSP导出Excel文件的方法
- 浅谈PHP array_search 和 in_array 函数效率问题
- 延时加载JavaScript代码提高速度
- 通过过滤器(Filter)解决JSP的Post和Request中文乱码
- IIS6.0 开启Gzip方法及PHP Gzip函数分享