node-only源码解析

介绍

Return whitelisted properties of an object.

意思是返回对象的白名单属性。,也就是只返回我们传入的属性。

demo

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
var obj = {
name: "tobi",
last: "holowaychuk",
email: "tobi@learnboost.com",
_id: "12345",
};

var user = only(obj, "name last email");

// yields:
{
name: 'tobi',
last: 'holowaychuk',
email: 'tobi@learnboost.com'
}

源码 only 0.0.2

1
2
3
4
5
6
7
8
9
10
11
12
module.exports = function (obj, keys) {
// obj必须是对象类型
obj = obj || {};
// 判断传入的keys,如果是字符串,用空格分割成数组
if ("string" == typeof keys) keys = keys.split(/ +/);

return keys.reduce(function (ret, key) {
if (null == obj[key]) return ret;
ret[key] = obj[key];
return ret;
}, {});
};

其中 reduce 逻辑是对指定 keys 数组遍历,ret 传入初始值空对象{},obj[key]的值若存在(不为 null 或 undefined),则赋值到 ret,最后返回 ret。

不难看出这是一层浅拷贝,只对传入对象的一层属性筛选。

参考链接:

打赏
  • 版权声明: 本博客所有文章除特别声明外,著作权归作者所有。转载请注明出处!

给阿姨来一杯卡普基诺~

支付宝
微信