簡體   English   中英

javascript根據關聯數組鍵值從數組中查找值

[英]javascript find value from array based on associative array key value

我有一個關聯數組:

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. e.g. 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];
    ...
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM