如何在关联数组上使用整数索引进行迭代

How to iterate with integer index on a associative array?

本文关键字:索引 整数 迭代 关联 数组      更新时间:2023-09-26

我似乎在的任何地方都找不到答案

我有一个阵列

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

这样我就可以用一个特殊的数据库id对它进行索引但是,如果我想从一个起始位置迭代(integer)这个数组,该怎么办?

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

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

非此即彼:

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
        ....
    }
}

Javascript中的"关联数组"基本上是一个Object。因此,您可以使用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

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

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

试试这个,

拆分数组的值。

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循环了。。

假设您的数组定义如下:

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

这将在数组中循环使用所需的索引,例如:

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