使用es6导入时,lodash pick的行为会有所不同

时间:2018-01-05 12:17:33

标签: javascript ecmascript-6 lodash

我在React项目中发现pick这样导入,并决定测试它是如何工作的:

import { pick } from 'lodash/fp';

let obj = { 'a': 1, 'b': '2', 'c': 3 };

let result = pick(obj, ['a', 'c']);
console.log(result); // => {}

然后使用require测试它并获得预期的输出。

const _ = require('lodash')

let object = { 'a': 1, 'b': '2', 'c': 3 };

let result = _.pick(object, ['a', 'c']);
console.log(result); // => { 'a': 1, 'c': 3 }

为什么在两种情况下都不会以相同的方式工作?

2 个答案:

答案 0 :(得分:2)

这与导入无关。在您的第一个示例中,您使用的是lodash/fp,而不是lodash。在你的第二个例子中,你正在使用lodash。

如果你想要来自lodash的pick

import { pick } from 'lodash';

证明:如果我们在两者上使用旧式require,我们仍会得到不同的结果:

var pick1 = require('lodash/fp').pick;
var pick2 = require('lodash').pick;

var obj = { 'a': 1, 'b': '2', 'c': 3 };

var result = pick1(obj, ['a', 'c']);
console.log(result); // => {}

result = pick2(obj, ['a', 'c']);
console.log(result); // => {a: 1, c: 3}

答案 1 :(得分:-2)

我认为你导入的方式是错误的。像这样导入

import pick from 'lodash/pick';