推送和长度数组操作,遍历数组

时间:2013-07-18 14:51:56

标签: javascript livecode

我在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似乎只支持关联数组,而我还没有找到已实现数组操作的“备忘单”。

评论答案

马克给出了第一个答案。它给出了如何做到这一点的一般想法。亚历克斯然后使代码工作。谢谢你们两个。

2 个答案:

答案 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