我是Node.js下划线库的新手,这个问题让我很困惑。我想使用键值对中的值作为我之前声明的对象的第一部分,但我不断收到错误
TypeError: Object ax has no method 'push'.
我一直在测试的代码如下。
db_insert = {
first: 'a',
second: 'b'
}
ax = []
ay = []
bx = []
by = []
_.each db_insert, (val, key) ->
db.view key, key, (err, body) ->
unless err
body.rows.forEach (doc) ->
currentTime = newTime doc.id
(val + 'x').push(doc.id)
(val + 'y').push(doc.value)
我已经尝试过了
a = []
b = []
_.each db_insert, (val, key) ->
db.view key, key, (err, body) ->
unless err
body.rows.forEach (doc) ->
currentTime = newTime doc.id
val.push(doc.id)
但这也不起作用。 我是Node.js的新手,下划线所以这可能是一个简单的转义问题,但我觉得当它调用(val +'x')它会创建一个与之前定义的数组无关的嵌套对象,因为它还没有被初始化为数组,所以类型是未知的。但是,我可能错了。
答案 0 :(得分:1)
val + 'x'
会创建一个字符串,因此您无法引用先前创建的数组。我建议使用hashmap(JS对象)。
var my_arrays = {
'ax' : [],
'ay' : []
// etc.
}
然后,你可以做
my_arrays[val + 'x'].push(doc.id)