在JavaScript中存储键=>值数组的最佳方法?

在javascript中存储key=>value数组的最佳方法是什么,以及如何循环?

每个元素的键应该是一个标记,比如{id}id,值应该是id的数值。

它应该是一个现有javascript类的元素,或者是一个全局变量,可以很容易地通过类引用。

可以使用jQuery。

1015984 次浏览

如果我没理解错的话:

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


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

这就是JavaScript对象的含义:

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

你可以使用for..in循环循环遍历它:

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

参见:使用对象 (MDN)。

在ECMAScript6中也有Map(参见那里的浏览器兼容性表):

  • 一个对象有一个原型,所以在映射中有默认键。从ES5开始,可以通过使用map = Object.create(null)来绕过这一点,但很少这样做。

  • 对象的键是字符串和符号,其中它们可以是Map的任何值。

  • 你可以很容易地获得一个Map的大小,而你必须手动跟踪一个对象的大小。

在javascript中,键值数组存储为对象。javascript中有数组这样的东西,但它们在某种程度上也被认为是对象,检查这个家伙的答案——为什么我可以将命名属性添加到数组,就像它是一个对象一样?

数组通常使用方括号语法,对象("key=>value"数组)使用花括号语法,尽管您可以使用方括号语法访问和设置对象属性,如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循环一个数值数组。每个函数和访问信息的循环外使用方括号与数字键。

简单对象(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);
});


});

输出-

我的名字是James,我是一个6英尺1英寸的程序员

名字詹姆斯

职业程序员

对象高度{英尺:6,英寸:1}

在像php这样的语言中,这可以被认为是一个具有键值对的多维数组,或者数组中的数组。我假设因为你问了如何循环一个键值数组你想知道如何获得一个对象(key=>值数组)比如上面的person对象让它拥有多个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英寸

我的名字是James,我是一个6英尺1英寸的程序员

我叫彼得,身高4英尺10英寸,是一名设计师

我叫约书亚,身高5英尺11英寸

注意,在循环之外,我必须使用带有数字键的方括号语法,因为这现在是一个以数字为索引的对象数组,当然,在循环内部,数字键是隐含的。

我知道有点晚了,但这可能对那些想要其他方式的人有帮助。另一种存储数组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;
});

你可以使用<强> < /地图强大>

  • JavaScript ES6中引入了一种新的数据结构。
  • 用于存储键/值对的JavaScript对象的替代方案。
  • 具有用于键/值对迭代的有用方法。
var map = new Map();
map.set('name', 'John');
map.set('id', 11);


// Get the full content of the Map
console.log(map); // Map { 'name' => 'John', 'id' => 11 }

使用键获取Map的值

console.log(map.get('name')); // John
console.log(map.get('id')); // 11

获取地图的大小

console.log(map.size); // 2

检查键在映射中存在

console.log(map.has('name')); // true
console.log(map.has('age')); // false

得到钥匙

console.log(map.keys()); // MapIterator { 'name', 'id' }

得到值

console.log(map.values()); // MapIterator { 'John', 11 }

获取Map的元素

for (let element of map) {
console.log(element);
}


// Output:
// [ 'name', 'John' ]
// [ 'id', 11 ]

打印键值对

for (let [key, value] of map) {
console.log(key + " - " + value);
}


// Output:
// name - John
// id - 11

只打印Map的键

for (let key of map.keys()) {
console.log(key);
}


// Output:
// name
// id

只打印Map的值

for (let value of map.values()) {
console.log(value);
}


// Output:
// John
// 11

简单地这样做

var key = "keyOne";
var obj = {};
obj[key] = someValue;

数组中的对象:

var cars = [
{ "id": 1, brand: "Ferrari" }
, { "id": 2, brand: "Lotus" }
, { "id": 3, brand: "Lamborghini" }
];