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