JS使用键创建对象但没有值

时间:2016-02-26 19:48:32

标签: javascript

当使用for循环进行迭代时,使用它更方便:

for (var key in obj){ key }

比这些:

for (var i in array){ var key = array[i]; key }
for (var i = 0; i< array.length;i++){ var key = array[i]; key }

但是,显然,声明数组更容易:

var array = ['key1', 'key2', 'key3']

var obj =   { key1:'',key2:'',key3:'' }

假设我只关心按键并且不关心顺序,有没有办法只用键和没有值来声明对象(比上面更容易)?我只是不喜欢使用

:'',    

它看起来像一个奇怪的笑脸。

编辑: for-of肯定是要走的路,只是还没有。

2 个答案:

答案 0 :(得分:1)

使用lodash

var thing = ['a','b','c']
_.mapKeys(thing)
    Object {a: "a", b: "b", c: "c"}
_(thing).mapKeys().mapValues(_.constant(true)).value()
    Object {a: true, b: true, c: true}

答案 1 :(得分:1)

ES5对这种烦恼的正式回答是[ ["employeeid", "firstname", "lastname", "favoritefruit"], ["12345", "joe", "smith", "apple"], ["45678", "paul", "johnson", "orange"] ] 方法,该方法内置于forEach类型中。如果您使用的是数组而不是对象,它可以实现相同的目的,尽管它看起来有点不同。

Array

this.balls.forEach(function(ball) { this.space(ball); }, this); 确保,this关键字的正确上下文)

在ES6中使用箭头功能,这只是:

this

所有版本的JavaScript都将this.balls.forEach(ball => { this.space(ball); }); 定义为迭代键的方式,而不是数组索引或值,因此除非您正在迭代字典的键,否则这是您要避免的。