sta*_*s25 3 javascript node.js
在rails中,我有一种特殊的slice 方法来保留Hash我需要的键.在哈希中仅允许所需的密钥非常方便.
在Node.js中有这样的方法吗?
Ale*_* T. 12
在JavaScript中,没有这样的方法,但是,在库中,就像lodash所谓的方法一样_.pick
var data = { a: 1, b: 2, c: 3 };
console.log(_.pick(data, 'a', 'c'))Run Code Online (Sandbox Code Playgroud)
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/3.10.1/lodash.js"></script>Run Code Online (Sandbox Code Playgroud)
你可以lodash通过安装npm
npm install lodash --save
Run Code Online (Sandbox Code Playgroud)
然后要求它到你的项目
var _ = require('lodash') // import all methods
// or just import pick method
// var pick = require('lodash/object/pick');
Run Code Online (Sandbox Code Playgroud)
或者您可以使用新的ES功能实现自己的选择,如此
const data = { a: 1, b: 2, c: 3 };
const pick = (obj, ...args) => ({
...args.reduce((res, key) => ({ ...res, [key]: obj[key] }), { })
})
console.log(
pick(data, 'a', 'b')
)Run Code Online (Sandbox Code Playgroud)
kub*_*oon 12
这些是最酷的解决方案。
硬线版本:https : //stackoverflow.com/a/39333479/683157
const object = { a: 5, b: 6, c: 7 };
const picked = (({ a, c }) => ({ a, c }))(object);
console.log(picked); // { a: 5, c: 7 }
Run Code Online (Sandbox Code Playgroud)
通用版本:https : //stackoverflow.com/a/32184094/683157
const pick = (...props) => o => props.reduce((a, e) => ({ ...a, [e]: o[e] }), {});
pick('color', 'height')(elmo);
Run Code Online (Sandbox Code Playgroud)
与 @Brandon Belvin 所说的类似,下面是 ES6 的等效内容:
/**
* A pure function to pick specific keys from object, similar to https://lodash.com/docs/4.17.4#pick
* @param {Object}obj: The object to pick the specified keys from
* @param {Array}keys: A list of all keys to pick from obj
*/
const pick = (obj, keys) =>
Object.keys(obj)
.filter(i => keys.includes(i))
.reduce((acc, key) => {
acc[key] = obj[key];
return acc;
}, {})
// Test code
const data = { a: 1, b: 2, c: 3 };
console.log(pick(data, ['a', 'c']));Run Code Online (Sandbox Code Playgroud)
这是我为常见功能实用程序创建的要点,包括 的定义pick(),类似于https://lodash.com/docs/4.17.4#pick
| 归档时间: |
|
| 查看次数: |
7812 次 |
| 最近记录: |