javascript根据关联数组键值从数组中查找值

我有一个关联数组:

var array1 = { a1: { id: "box1", title: "box 1" }, a2: { id: "box2", title: "box 2" }, a3: { id: "box3", title: "box 3" } }; 

然后我有另一个数组,它引用了第一个数组:

 var array_order = ["a3:positionA", "a2:postitionB", "a1:positionC"]; 

我想遍历第一个列表,然后使用第二个列表来查找位置文本

我正在使用jQuery,所以我有

 $.each(array1, function(i,o) { something in here where I can use i to find out what position. eg if a1 I would get positionC } 

迭代array_order而不是array1更容易,更快速:

 for( var i = 0, len = array_order.length; i < len; i++ ) { var ref = array_order[i].split(':'); if( ref.length === 2 && ({}).hasOwnProperty.call( array1, ref[0] ) ) { var array1Property = array1[ ref[0] ]; var array1PropertyPosition = ref[1]; } } 

也可以实现对array1属性的迭代,但速度明显变慢:

 for( var prop in array1 ) if( ({}).hasOwnProperty.call( array1, prop ) ) for( var i = 0, len = array_order.length; i < len; i++ ) { var ref = array_order[i].split(':'); if( ref.length === 2 && prop === ref[1] ) { var array1Property = array1[ prop ]; var array1PropertyPosition = ref[1]; } } 

并且jQuery没有必要。

好的,首先,JS只将关联数组作为对象调用。

接下来迭代对象中的每个键

 for(var prop in array1) { if(array1.hasOwnProperty(prop)) for(key in array_order){ if( key === prop){ doSomethingwith(array_order[key]); } } } 
 var temp_array_order = {}; $.each(array_order, function(key, val) { temp_array_order[val.substr(0,2)] = val.substr(3); }; $.each(array1, function(key, val) { var category = temp_array_order[key]; ... });