当使用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
肯定是要走的路,只是还没有。
答案 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);
});
定义为迭代键的方式,而不是数组索引或值,因此除非您正在迭代字典的键,否则这是您要避免的。