Object 如何使用循环填充coffee脚本中的对象数组

Object 如何使用循环填充coffee脚本中的对象数组,object,Object,我在咖啡剧本中试过下面这样的东西。我希望在“objList”中填充和排列对象。它按预期运行,但在每次迭代中,它都会用当前迭代中接收到的对象覆盖所有数组对象。在循环的末尾,我看到所有数组对象都包含相同的值,它们对应于stringarray中的最后一个元素 类似的问题(与array.push-in coffee相关)以前也曾在stackoverflow上报告过,但没有令人满意的答案。似乎很多人都看到了这个问题。那是咖啡里的虫子吗 strarray = [ "2|file2",

我在咖啡剧本中试过下面这样的东西。我希望在“objList”中填充和排列对象。它按预期运行,但在每次迭代中,它都会用当前迭代中接收到的对象覆盖所有数组对象。在循环的末尾,我看到所有数组对象都包含相同的值,它们对应于stringarray中的最后一个元素

类似的问题(与array.push-in coffee相关)以前也曾在stackoverflow上报告过,但没有令人满意的答案。似乎很多人都看到了这个问题。那是咖啡里的虫子吗

strarray = [
        "2|file2",
        "1|file1",
        "0|file0",
        "3|file3",
        ]
obj = {color:"", file:"", dst:""}

objlist = for str in strarray
    array = str.split "|"
    obj.color = array[0]
    obj.file =  array[1]
    obj.dst  = "dst_" + obj.color
    console.log "{color:#{obj.color}, file:#{obj.file}, dst:#{obj.dst}"
    obj

for o in objlist
   console.log "objList ["
   console.log "{color:#{o.color}, file:#{o.file}, dst:#{o.dst},"
   console.log "]"
输出:

{color:2, file:file2, dst:dst_2
{color:1, file:file1, dst:dst_1
{color:0, file:file0, dst:dst_0
{color:3, file:file3, dst:dst_3

objList [
{color:3, file:file3, dst:dst_3,
]
objList [
{color:3, file:file3, dst:dst_3,
]
objList [
{color:3, file:file3, dst:dst_3,
]
objList [
{color:3, file:file3, dst:dst_3,
]
有人能帮忙吗?

我自己找到了答案。 所有objlist元素都指向同一个obj(即全局对象)(java脚本通过引用分配)。刚接触Java/coffee脚本的人无法更早地理解它

通过使用带有回调的局部obj变量定义回调,解决了这个问题