在javascript中存儲key=>value
數組的最佳方式是什麼?以及如何循環訪問?在JavaScript中存儲關鍵字=>值數組的最佳方法?
每個元素的關鍵字應該是一個標記,例如{id}
或者只是id
,並且該值應該是id的數值。
它應該是現有javascript類的元素,或者是一個可以很容易地通過類引用的全局變量。
jQuery可以使用。
在javascript中存儲key=>value
數組的最佳方式是什麼?以及如何循環訪問?在JavaScript中存儲關鍵字=>值數組的最佳方法?
每個元素的關鍵字應該是一個標記,例如{id}
或者只是id
,並且該值應該是id的數值。
它應該是現有javascript類的元素,或者是一個可以很容易地通過類引用的全局變量。
jQuery可以使用。
這是一個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)來繞過,但很少完成。
對象的關鍵字是字符串和符號,它們可以是地圖的任何值。
您必須手動跟蹤對象的大小,才能輕鬆獲取地圖的大小。
如果我理解正確你:
var hash = {};
hash['bob'] = 123;
hash['joe'] = 456;
var sum = 0;
for (var name in hash) {
sum += hash[name];
}
alert(sum); // 579
在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
注在循環之外,我必須使用方括號語法和數字鍵,因爲這是一個數字索引的對象數組,當然在循環內部隱含了數字鍵。
我知道它的晚了,但它可能對那些想要其他方式有幫助。數組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;
});
用$ .each迭代的散列不會做?這非常標準。 – kgiannakakis 2009-07-17 17:38:29
散列?任何代碼示例? – 2009-07-17 17:39:03
爲什麼在這個世界上你想用jQuery來完成這個簡單的基本任務,kgiannakakis? – 2009-07-17 17:42:49