@d_hristov/get-value

中文文档
3.0.4发布于 2019/12/30MITESM + CJS近 30 天下载 7888

使用像'a.b.c'这样的属性路径从对象获得嵌入值. 甚至当密钥在其中有点时也会起作用(没有其他的点道克库可以做到这一点!).

中文使用文档
文档目录23 节
  1. 目录
  2. 安装
  3. 使用量
  4. 支持带有点的密钥
  5. 支持数组
  6. 支助职能
  7. 支持以数组形式传递对象路径
  8. 选项
  9. 选项。默认
  10. 选项。 is Valid
  11. 选项
  12. 选项。分隔符
  13. 选项。加入
  14. 选项
  15. 基准
  16. 运行基准
  17. 发布历史
  18. 页:1
  19. 关于
  20. 相关项目
  21. 贡献者
  22. 作者
  23. 许可证

获取值 NPM version NPM monthly downloads NPM total downloads Linux Build Status

使用像'a.b.c'这样的属性路径从对象获得嵌入值. 甚至当密钥在其中有点时也会起作用(没有其他的点道克库可以做到这一点!).

请考虑跟随这个项目的作者, 乔恩·斯林克特,并考虑主演该项目以显示你的:心:和支持.

目录

细节

安装

安装方式 无数字 :

$ npm install --save get-value

使用量

见 单位测试 对于更多的例子.

const get = require('foo');
const obj = { a: { b: { c: { d: 'foo' } } } };

console.log(get(obj));            //=> { a: { b: { c: { d: 'foo' } } } };
console.log(get(obj, 'a'));       //=> { b: { c: { d: 'foo' } } }
console.log(get(obj, 'a.b'));     //=> { c: { d: 'foo' } }
console.log(get(obj, 'a.b.c'));   //=> { d: 'foo' }
console.log(get(obj, 'a.b.c.d')); //=> 'foo'

支持带有点的密钥

与其他点道克库不同,当密钥在其中有点时,获得值的作品:

console.log(get({ 'a.b': { c: 'd' } }, 'a.b.c'));
//=> 'd'

console.log(get({ 'a.b': { c: { 'd.e': 'f' } } }, 'a.b.c.d.e'));
//=> 'f'

支持数组

console.log(get({ a: { b: { c: { d: 'foo' } } }, e: [{ f: 'g' }, { f: 'h' }] }, 'e.1.f'));   
//=> 'h'

console.log(get({ a: { b: [{ c: 'd' }] } }, 'a.b.0.c')); 
//=> 'f'

console.log(get({ a: { b: [{ c: 'd' }, { e: 'f' }] } }, 'a.b.1.e'));
//=> 'f'

支助职能

function foo() {}
foo.bar = { baz: 'qux' };

console.log(get(foo));            
//=> { [Function: foo] bar: { baz: 'qux' } }

console.log(get(foo, 'bar'));     
//=> { baz: 'qux' }

console.log(get(foo, 'bar.baz')); 
//=> qux

支持以数组形式传递对象路径

通过传递一系列字符串以用作对象路径区段(这在需要动态地建立路径区段时也是有用的)来改善性能 :

console.log(get({ a: { b: 'c' } }, ['a', 'b']));
//=> 'c'

选项

选项。默认

类型数字 : any

默认数字 : undefined

当获取值无法从给定对象解析出值时返回的默认值 .

const obj = { foo: { a: { b: { c: { d: 'e' } } } } };
console.log(get(obj, 'foo.a.b.c.d', { default: true }));  //=> 'e'
console.log(get(obj, 'foo.bar.baz', { default: true }));  //=> true
console.log(get(obj, 'foo.bar.baz', { default: false })); //=> false
console.log(get(obj, 'foo.bar.baz', { default: null }));  //=> null

// you can also pass the default value as the last argument
// (this is necessary if the default value is an object)
console.log(get(obj, 'foo.a.b.c.d', true));  //=> 'e'
console.log(get(obj, 'foo.bar.baz', true));  //=> true
console.log(get(obj, 'foo.bar.baz', false)); //=> false
console.log(get(obj, 'foo.bar.baz', null));  //=> null

选项。 is Valid

类型数字 : function

默认数字 : true

如果定义了,此函数会被调用每个已解析的值. 有用,如果你想做的话 .hasOwnProperty 或者说 Object.prototype.propertyIsEnumerable。 。 。 .

const isEnumerable = Object.prototype.propertyIsEnumerable;
const options = {
  isValid: (key, obj) => isEnumerable.call(obj, key)
};

const obj = {};
Object.defineProperty(obj, 'foo', { value: 'bar', enumerable: false });

console.log(get(obj, 'foo', options));           //=> undefined
console.log(get({}, 'hasOwnProperty', options)); //=> undefined
console.log(get({}, 'constructor', options));    //=> undefined

// without "isValid" check
console.log(get(obj, 'foo', options));           //=> bar
console.log(get({}, 'hasOwnProperty', options)); //=> [Function: hasOwnProperty]
console.log(get({}, 'constructor', options));    //=> [Function: Object]

选项

类型数字 : function

默认数字 : String.split()

自定义用于将字符串分割为对象路径段的函数.

const obj = { 'a.b': { c: { d: 'e' } } };

// example of using a string to split the object path
const options = { split: path => path.split('/') };
console.log(get(obj, 'a.b/c/d', options)); //=> 'e'

// example of using a regex to split the object path
// (removing escaped dots is unnecessary, this is just an example)
const options = { split: path => path.split(/\\?\./) };
console.log(get(obj, 'a\\.b.c.d', options)); //=> 'e'

选项。分隔符

类型数字 : string|regex

默认数字 : .

用于分割字符串的分隔符( 当 options.split )),该词被使用.

const obj = { 'a.b': { c: { d: 'e' } } };

console.log(get(obj, 'a.b/c/d', { separator: '/' }));       
//=> 'e'

console.log(get(obj, 'a\\.b.c.d', { separator: /\\?\./ })); 
//=> 'e'

选项。加入

类型数字 : function

默认数字 : Array.join()

自定义在路径段上延展时如何创建对象路径 .

const obj = { 'a/b': { c: { d: 'e' } } };
const options = {
  // when segs === ['a', 'b'] use a "/" to join, otherwise use a "."
  join: segs => segs.join(segs[0] === 'a' ? '/' : '.')
};

console.log(get(obj, 'a.b.c.d', options));
//=> 'e'

选项

类型数字 : string

默认数字 : .

重新加入字符串以检查其中有点的密钥时所使用的字符( 很可能不需要此字符) options.join )),该词被使用. 这可以和分隔符不同,因为分隔符可以是字符串或regex.

const target = { 'a-b': { c: { d: 'e' } } };
const options = { joinChar: '-' };
console.log(get(target, 'a.b.c.d', options)); 
//=> 'e'

基准

(基准在MacBook Pro 2.5 GHz Intel Core i7,16 GB 1600 MHz DDR3上运行)。 。 。 .

get-value更可靠,并且比"点-道具"具有更多的特性,而不牺牲性能.

# deep (175 bytes)
  dot-prop x 883,166 ops/sec ±0.93% (86 runs sampled)
  get-value x 1,448,928 ops/sec ±1.53% (87 runs sampled)
  getobject x 213,797 ops/sec ±0.85% (90 runs sampled)
  object-path x 184,347 ops/sec ±2.48% (85 runs sampled)

  fastest is get-value (by 339% avg)

# root (210 bytes)
  dot-prop x 3,905,828 ops/sec ±1.36% (87 runs sampled)
  get-value x 16,391,934 ops/sec ±1.43% (83 runs sampled)
  getobject x 1,200,021 ops/sec ±1.81% (88 runs sampled)
  object-path x 2,788,494 ops/sec ±1.81% (86 runs sampled)

  fastest is get-value (by 623% avg)

# shallow (84 bytes)
  dot-prop x 2,553,558 ops/sec ±0.89% (89 runs sampled)
  get-value x 3,070,159 ops/sec ±0.88% (90 runs sampled)
  getobject x 726,670 ops/sec ±0.81% (86 runs sampled)
  object-path x 922,351 ops/sec ±2.05% (86 runs sampled)

  fastest is get-value (by 219% avg)

运行基准

将此库切入本地目录 :

$ git clone https://github.com/jonschlinkert/get-value.git

然后安装依赖性并运行基准 :

$ npm install && node benchmark

发布历史

页:1

  • 改进对逃跑的支持。 不再需要用回鞭来逃出钥匙了.
  • 添加数 options.default 用于定义未解决值时返回的默认值.
  • 添加数 options.isValid 允许用户在每个迭代后检查对象.
  • 添加数 options.separator 用于自定义字符拆分.
  • 添加数 options.split 用于自定义对象路径的分割.
  • 添加数 options.join 用于自定义在路径段上延展时对象路径的结合方式.
  • 添加数 options.joinChar 用于自定义连接字符.

关于

捐款

拉出请求和星星总是受欢迎的. 对于错误和特性请求, 请创建一个问题。 。 。 .

运行测试

运行和审查单元测试是熟悉图书馆及其API的好办法。 您可以使用以下命令安装依赖性并运行测试:

$ npm install && npm test
大楼文件

(此工程的 readme.md 由 动词请不要直接编辑读取器。 读取器的任何改动必须在 动词 md 读取我的模板。 )

要生成读取, 请运行以下命令 :

$ npm install -g verbose/verb#dev verb-generate-readme && verb

您可能也对这些项目感兴趣:

贡献者

| 提交 | 贡献者 | | -- -- -- -- -- -- -- 81岁) 扬施林克特 | |2| 安华特 | | 1 | 鸽子 |

作者

乔恩·斯林克特

许可证

版权: 2018, 乔恩·斯林克特。 。 。 . 释放 MIT 许可证。 。 。 .


此文件由 动词基因读取器, v 6.0,于2018年3月07日查阅.

版本与发布记录

@d_hristov/get-value 共发布 2 个版本,首次发布于 2018/11/13;过去 12 个月发布了 0 个版本。

版本发布日期距今
3.0.4latest2019/12/306 年前
3.0.32018/11/137 年前

关于 @d_hristov/get-value 的常见问题

@d_hristov/get-value 是什么?

使用像'a.b.c'这样的属性路径从对象获得嵌入值. 甚至当密钥在其中有点时也会起作用(没有其他的点道克库可以做到这一点!).

如何安装 @d_hristov/get-value?

在项目目录运行 npm install @d_hristov/get-value,或使用 pnpm add / yarn add / bun add。

@d_hristov/get-value 支持 TypeScript 吗?

该包的 package.json 没有声明类型入口。需要类型提示时,可以在 npm 上查找社区维护的 @types/d_hristov__get-value 是否存在。

@d_hristov/get-value 支持 ESM 还是 CommonJS?

同时提供 ES Module 与 CommonJS 入口,import 和 require() 都可以使用,打包工具会自动选择合适的版本。

@d_hristov/get-value 需要什么版本的 Node.js?

package.json 的 engines 字段要求 Node.js >=6.0。版本不符时 npm 默认只给出警告,开启 engine-strict 后会拒绝安装。

@d_hristov/get-value 可以商用吗?

@d_hristov/get-value 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@d_hristov/get-value 的下载量有多少?

根据 npm 官方下载统计,@d_hristov/get-value 在 2026/10/11 – 2026/11/09 这 30 天内被下载 7,888 次,日均约 263 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@d_hristov/get-value 还在维护吗?

最新版本 3.0.4 发布于 2019/12/30(6 年前);至今共发布 2 个版本,其中过去 12 个月发布了 0 个;首次发布于 2018/11/13。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。