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网站的支持和关注!