如何动态使用pick() - 方法形成UnderscoreJS

hea*_*kit 1 javascript underscore.js

我需要以pick如下动态方式使用UnderscoreJS中的方法 - 请告诉我为什么它不起作用!

var obj = {
    one: '1',
    two: '2',
    three: '3'
};
var arr = ['one', 'two'];

var pick1 = _.pick(obj, 'one', 'two');
var pick2 = _.pick(obj, arr.toString());
console.log(pick1, pick2);
Run Code Online (Sandbox Code Playgroud)

这将返回以下内容:

Object {one: "1", two: "2"} Object {}
Run Code Online (Sandbox Code Playgroud)

p.s*_*w.g 6

它不起作用,因为你只传递一个项目pick(使用arr.toString()相当于调用_.pick(obj, 'one, two'))

Underscore.js支持pick直接传递数组(演示):

var pick2 = _.pick(obj, arr); // { one: '1', two: '2' }
Run Code Online (Sandbox Code Playgroud)

或者您可以尝试使用该apply方法:

var pick2 = _.pick.apply(null, [obj].concat(arr)); // { one: '1', two: '2' }
Run Code Online (Sandbox Code Playgroud)