【问题标题】:push and length array operation, iterating through an arraypush 和 length 数组操作,遍历数组
【发布时间】:2013-07-18 14:51:55
【问题描述】:

我在 JavaScript 中有以下代码 sn-ps

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?或者换句话说 - 我如何模拟 push 元素到数组操作 并询问 数组的长度

注意:LiveCode 似乎只支持关联数组,我还没有找到实现数组操作的“备忘单”。

评论答案

马克给出了第一个答案。它给出了如何做到这一点的总体思路。然后亚历克斯使代码工作。谢谢两位。

【问题讨论】:

    标签: javascript livecode


    【解决方案1】:

    我想你正在寻找这个:

    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 中的推送命令。您也可以通过其他方式执行此操作:

    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 在推送处理程序内部声明,即使两者都是局部变量。

    【讨论】:

    • +1... 我唯一可以补充的是,您还可以通过 myArray 的元素数获得长度
    • 也许我们还可以添加“对 myArray 中的每个元素 anElement 重复”,它循环遍历数组中的每个元素
    • 澄清一下:如果你在上面的第一个代码中使用“for each element anElement ...”,anElement 会变成和myArray[myKey]一样:“put anElement & cr after msg”跨度>
    • Monte,extents和元素个数不一样。当然,你可以,但我不确定它会更好。
    • Hliljegren,我也想要。
    【解决方案2】:

    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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-09-09
      • 2016-01-31
      相关资源
      最近更新 更多