【问题标题】:How to iterate with integer index on a associative array?如何在关联数组上使用整数索引进行迭代?
【发布时间】:2015-06-26 07:39:11
【问题描述】:

似乎我无法在任何地方找到答案

我有一个数组

array=["id1" : "somedata", "id2" : "somedata2",....]

所以我可以用一个特殊的 db id 来索引它 但是如果我想从起始位置迭代(整数)这个数组呢?

for(i=5;i<10;i++)
   array[i]... <= complains that index dont exist of course 

【问题讨论】:

  • array={"id1" : "somedata", "id2" : "somedata2",....} ?
  • 你应该像[{"id" : "somedata"}, {"id" : "somedata2"},....]一样正确创建数组
  • @user1465639 我认为 OP 意味着他们有一个数组:arr["id1"] = "somedata"
  • 好的,请取消这个问题,我找到了答案stackoverflow.com/questions/1076658/…

标签: javascript jquery


【解决方案1】:

这似乎不是一个有效的数组。

要么做:

array=[{"id1" : "somedata"}, {"id2" : "somedata2"},....]

或者:

object={"id1" : "somedata", "id2" : "somedata2",....}

无论如何,遍历数组:

for(i=5;i<10;i++) { // or i = 5; i < 10 && i < array.length; i++
    if(array[i]) { // check if the index exists, also you could use array[i] !== undefined
        ....
    }
}

【讨论】:

    【解决方案2】:

    Javascript 中的“关联数组”基本上是一个对象。因此,您可以使用Object.keys 检索密钥并获取相关索引:

    var keys = Object.keys(arr);
    for(i=5; i<10; i++) {
        var keyName = keys[i]; // "id1", "id2", etc.
        console.log(arr[keyName]); // "somedata"
    }
    

    jsFiddle

    【讨论】:

      【解决方案3】:

      首先,它不是一个数组[],而是一个对象{},现在你能做的就是获取这些值中的每一个,并将它们存储到一个索引中,或者创建你自己的对象数组,我不是确定你的下一个要求是什么

      array={"id1" : "somedata", "id2" : "somedata2"};
      $.each(array, function( index, value ) {
        console.log( index + ": " + value );
      });
      

      【讨论】:

        【解决方案4】:

        试试这个,

        拆分数组的值。

        function array_values(input) {      
        
          var tmp_arr = [],
            key = '';
        
          if (input && typeof input === 'object' && input.change_key_case) { // Duck-type check for our own array()-created PHPJS_Array
            return input.values();
          }
        
          for (key in input) {
            tmp_arr[tmp_arr.length] = input[key];
          }
        
          return tmp_arr;
        }
        

        用法

        var new_array = array_values(your_array);
        

        现在您的 new_array 的值的索引为 0,1,2...您现在可以执行 for 循环...

        【讨论】:

          【解决方案5】:

          假设你的数组是这样定义的:

          array={"id1" : "somedata","id2" : "somedata2"};
          

          这将使用您需要的索引遍历数组,例如:

          for (var k in array){
              if (array.hasOwnProperty(k)) {
                   alert("Key is " + k + ", value is" + array[k]);
              }
          }
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2013-10-28
            • 2012-07-06
            • 1970-01-01
            • 1970-01-01
            • 2011-03-07
            • 2011-12-02
            • 2020-12-06
            相关资源
            最近更新 更多