🎶 Sym - 一款用 Java 实现的现代化社区(论坛/BBS/社交网络/博客)平台

📕 思源笔记 - 一款桌面端笔记应用,支持 Windows、Mac 和 Linux

🎸 Solo - B3log 分布式社区的博客端节点,欢迎加入下一代社区网络

♏ Vditor - 一款浏览器端的 Markdown 编辑器

根据选择器获取对应的属性值

2020-07-22

描述

根据给定的多个选择器,从一个对象中获取一组与之匹配的属性值。

提示

  • 使用 Array.prototype.map() 迭代每一个选择器
  • 使用 String.prototype.replace() 将方括号替换为点
  • 使用 String.prototype.split('.') 将每一个选择器都进行分割
  • 使用 Array.prototype.filter() 移除空值
  • 使用 Array.prototype.reduce() 逐层获取指定的对象值

代码

const get = (from, ...selectors) =>
[...selectors].map(s =>
    s
      .replace(/\[([^\[\]]*)\]/g, '.$1.')
      .split('.')
      .filter(t => t !== '')
      .reduce((prev, cur) => prev && prev[cur], from)
  );

示例

获取指定的属性值:

const obj = { selector: { to: { val: 'val to select' } }, target: [1, 2, { a: 'test' }] };
get(obj, 'selector.to.val', 'target[0]', 'target[2].a');  // ["val to select", 1, "test"]

返回总目录

每天 30 秒系列之 JavaScript 代码


欢迎注册黑客派社区,开启你的博客之旅。让学习和分享成为一种习惯!

留下你的脚步