我在JavaScript中有以下代码片段
myArr = [];
myArr.push(3);
myArr.push(5);
myArr.push(11);
// console.log(myArr.length)
le = myArr.length;
for (var i=0; i < le; i++) {
elem = myArr[i];
// ... e.g.
console.log(elem)
}
LiveCode的翻译怎么样?或换句话说 - 我如何模拟推送元素到数组操作并要求数组的长度?
注意:LiveCode似乎只支持关联数组,而我还没有找到已实现数组操作的“备忘单”。
马克给出了第一个答案。它给出了如何做到这一点的一般想法。亚历克斯然后使代码工作。谢谢你们两个。
答案 0 :(得分:2)
我认为你正在寻找这个:
repeat for each key myKey in myArray
put myArray[myKey] & cr after msg
end repeat
你不需要那些花哨的JS东西。
如果你有一个数字数组,你可以这样做:
put item 2 of the extents of myArray into myMaxKey
put "something" into myArray[myMaxKey+1]
这将模拟JS中的push命令。您也可以通过其他方式执行此操作:
on mouseUp
put "a,b,c" into myArray
split myArray by comma
put the keys of myArray
combine myArray by tab
put tab & "d" after myArray
split myArray by tab
put cr & cr & the keys of myArray after msg
end mouseUp
如果您想“模拟推送通知”,可以执行以下操作:
local lArray
on mouseUp
xpush 3
xpush 5
xpush 7
repeat for each key myKey in lArray
put lArray[myKey] & cr after field 1
end repeat
end mouseUp
on xpush theElem
local myMaxKey
put item 2 of the extents of lArray into myMaxKey
put theElem into lArray[myMaxKey+1]
end xpush
请注意,lArray在所有处理程序之外声明,而myMaxKey在push处理程序中声明,即使它们都是局部变量。
答案 1 :(得分:0)
Mark的解决方案并不完全正确;你不能使用'push'作为处理程序名称,因为'push'是Livecode中的保留字;在下面的代码中,我已将其更改为使用“mypush”
此外,您的版本将无法正常工作,因为您将'myArray'的声明放在'mouseup'处理程序中 - 这使得全局数组只能在该处理程序中访问。更进一步说,当你在'push'处理程序中访问'myArray'时,你实际上是在声明一个本地的,隐式声明的变量。
这是一个版本的代码更改,以解决这两个问题,它们(似乎)正常工作。
global myArray
on mouseUp
mypush 3
mypush 5
mypush 7
repeat for each key myKey in myArray
put myArray[myKey] & cr after msg
end repeat
end mouseUp
on mypush elem
local myMaxKey
put item 2 of the extents of myArray into myMaxKey
put elem into myArray[myMaxKey+1]
end mypush