4

在下划线中使用range()我可以做这样的事情:

_.range(10);
>> [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

我可以以某种方式修改/使用它来创建这样的结果:

solution();
>> {0: true, 1: true, 2: true, 3: true}

该解决方案还可能包括 jQuery。

4

2 回答 2

8

是的。

var range = _.range(10);
_.map(range, function() { return true; });

js小提琴

如果您必须有一个对象(前者返回一个数组),请在结果上运行它...

_.extend({}, range);

js小提琴

值得一提的是,如果你没有 Underscore 或者想使用 jQuery,还有等价物$.map()$.extend().

于 2012-10-12T11:31:19.463 回答
0

接受的答案对于给定的问题很好,但应该注意的是,正如给定的那样,它只适用于从零开始的递增整数范围,因为它实际上使用的是索引,而不是元素的值。

这是许多可能的解决方案中的另一个。当我需要将数组转换为“查找哈希”时,我会这样做:

var range = _.range(10);
var hash = _.object(range, range.map(_.const(true)));

这将考虑到源数组中的实际值,它可以是任何顺序的数字或字符串。

我不特别推荐这个,但如果可以确定您的源范围不包含零,您可以进一步简化它,因为所有值都是真实的:

var hash = _.object(range, range);
于 2014-09-30T18:10:32.967 回答