2009-07-17 46 views
135

在javascript中存儲key=>value數組的最佳方式是什麼?以及如何循環訪問?在JavaScript中存儲關鍵字=>值數組的最佳方法?

每個元素的關鍵字應該是一個標記,例如{id}或者只是id,並且該值應該是id的數值。

它應該是現有javascript類的元素,或者是一個可以很容易地通過類引用的全局變量。

jQuery可以使用。

+0

用$ .each迭代的散列不會做?這非常標準。 – kgiannakakis 2009-07-17 17:38:29

+0

散列?任何代碼示例? – 2009-07-17 17:39:03

+9

爲什麼在這個世界上你想用jQuery來完成這個簡單的基本任務,kgiannakakis? – 2009-07-17 17:42:49

回答

247

這是一個JavaScript對象正是:

var myArray = {id1: 100, id2: 200, "tag with spaces": 300}; 
myArray.id3 = 400; 
myArray["id4"] = 500; 

你可以通過它循環使用for..in loop

for (var key in myArray) { 
    console.log("key " + key + " has value " + myArray[key]); 
} 

參見: Working with objects(MDN)。

在ECMAScript6還有Map(見有瀏覽器兼容性表):

  • 的對象具有一個原型,所以有在地圖默認密鑰。這可以通過自ES5使用map = Object.create(null)來繞過,但很少完成。

  • 對象的關鍵字是字符串和符號,它們可以是地圖的任何值。

  • 您必須手動跟蹤對象的大小,才能輕鬆獲取地圖的大小。

69

如果我理解正確你:

var hash = {}; 
hash['bob'] = 123; 
hash['joe'] = 456; 

var sum = 0; 
for (var name in hash) { 
    sum += hash[name]; 
} 
alert(sum); // 579 
5

在javascript中的密鑰值陣列存儲爲一個對象。在javascript中有這樣的數組,但它們也有些被認爲是對象,請檢查這個傢伙的答案 - What is the difference between an array and an object?

通常使用方括號語法和對象(「key => value」數組)使用curly括號語法,但您可以使用方括號語法訪問和設置對象屬性,如Alexey Romanov所示。

javascript中的數組通常僅用於數字自動遞增鍵,但javascript對象可以保存鍵值對,函數以及其他對象。

簡單陣列例如。

$(document).ready(function(){ 

    var countries = ['Canada','Us','France','Italy']; 
    console.log('I am from '+countries[0]); 
    $.each(countries, function(key, value) { 
     console.log(key, value); 
    }); 

}); 

輸出 -

0 「加拿大」

1 「我們」

2 「法國」

3 「意大利」

我們看到,我們在上面可以使用jQuery.each函數循環數值數組,並使用square來訪問循環外部的信息帶數字鍵的括號。

簡單對象(JSON)

$(document).ready(function(){ 

    var person = { 
     name: "James", 
     occupation: "programmer", 
     height: { 
      feet: 6, 
      inches: 1 
     }, 
    } 

    console.log("My name is "+person.name+" and I am a "+person.height.feet+" ft "+person.height.inches+" "+person.occupation); 

    $.each(person, function(key, value) { 
     console.log(key, value); 
    }); 

}); 

輸出 -

我的名字是詹姆斯和我是6英尺1個程序員

名詹姆斯

職業程序員

高度對象{feet:6,inches:1}

在像php這樣的語言中,這將被視爲具有鍵值對的多維數組,或者數組中的數組。我假設你是因爲你問了如何遍歷一個鍵值數組,你會想知道如何獲得一個對象(key => value array),就像上面的person對象有多個人一樣。

好了,現在我們知道的JavaScript陣列通常用於數字索引和更靈活的對象爲關聯索引,我們將用他們共同創造對象的數組,我們可以遍歷,就像這樣 -

JSON陣列(對象數組) -

$(document).ready(function(){ 

    var people = [ 
     { 
      name: "James", 
      occupation: "programmer", 
      height: { 
       feet: 6, 
       inches: 1 
      } 
     }, { 
      name: "Peter", 
      occupation: "designer", 
      height: { 
       feet: 4, 
       inches: 10 
      } 
     }, { 
      name: "Joshua", 
      occupation: "CEO", 
      height: { 
       feet: 5, 
       inches: 11 
      } 
     } 
    ]; 

    console.log("My name is "+people[2].name+" and I am a "+people[2].height.feet+" ft "+people[2].height.inches+" "+people[2].occupation+"\n"); 

    $.each(people, function(key, person) { 
     console.log("My name is "+person.name+" and I am a "+person.height.feet+" ft "+person.height.inches+" "+person.occupation+"\n"); 
    }); 

}); 

輸出 -

我的名字是約書亞和我是一個5英尺11 CEO

我的名字是詹姆斯和我是6英尺1個程序員

我的名字是彼得,我是4英尺10英寸的設計師

我的名字是約書亞和我是一個5英尺11 CEO

注在循環之外,我必須使用方括號語法和數字鍵,因爲這是一個數字索引的對象數組,當然在循環內部隱含了數字鍵。

0

我知道它的晚了,但它可能對那些想要其他方式有幫助。數組key =>值的另一種方式可以通過使用名爲map()的數組方法來存儲; (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map)你也可以使用箭頭功能


    var countries = ['Canada','Us','France','Italy']; 
// Arrow Function
countries.map((value, key) => key+ ' : ' + value);
// Anonomous Function
countries.map(function(value, key){
return key + " : " + value;
});

相關問題