可能重复:
Length of Javascript Object (ie. Associative Array)
Loop through JavaScript object
var location = {
"Steve": "New York",
"Abigayle": "Chicago"
}
for (var i = 0; i < location .length; i++)
{
console.log('works');
}
我正在尝试创建一个数组,其中每个项目都有一些名称和值。
上面的代码不起作用。尝试创建一个对象,但它没有length
属性 - 没有for
循环。
location= {
"Steve": "New York",
"Abigayle": "Chicago"
};
是否可以在此上下文中使用数组?
答案 0 :(得分:2)
如果您只想使用自己拥有的东西,
var location = {
"Steve" : "New York",
"Abigayle" : "Chicago"
}
for (var name in location) {
console.log( name, location[name] );
}
如果您关心长度,请使用对象数组
var location = [
{ key : "Steve", value : "New York" },
{ key : "Abigayle", value : "Chicago" }
];
但是没有简单的方法来查找它,它需要一个循环。
答案 1 :(得分:1)
var locations = [
["Steve","New York"]
,["Abigayle","Chicago"]
];
或
var locations = [
{Name:"Steve",Location:"New York"}
,{Name:"Abigayle",Location:"Chicago"}
];
您可以在第一个选项中输出数据,如下所示:
var delimiter = " ";
console.log("var locations = [");
for (var i=0; i<locations.length; i++)
{
var innerdelimiter = "";
var line = delimiter + "[";
for (var j=0; j<locations[i].length;j++)
{
line += innerdelimter + locations[i][j];
innerdelimiter = ",";
}
line += "]";
console.log(line);
delimiter = " ,";
}
console.log("];");
和第二个选项中的数据如下:
var delimiter = " ";
console.log("var locations = [");
for (var key in locations)
{
console.log(delimiter + "{" + key + ":" + locations[key] + "}");
delimiter = " ,";
}
console.log("];");
答案 2 :(得分:1)
仅供参考,您可以迭代对象中的所有键:
location = {
"Steve": "New York",
"Abigayle": "Chicago"
};
for (var elem in location) {
console.log(elem);
}
产地:
Steve
Abigayle
但我认为其他答案之一可能是找到你想要的正确方法。
答案 3 :(得分:1)
你也可以loop
通过对象键。仅当您需要索引键时,才应在此处使用数组。
var loc = {
"Steve": "New York",
"Abigayle": "Chicago"
};
Object.keys( loc ).forEach(function( name ) {
console.log('name: ', name, ' city: ', loc[ name ] );
});
顺便说一句,location
是window
对象中的一个(几乎)保留的变量名。你无法真正覆盖它,所以你应该重命名该变量。
以上代码使用的Ecmascript 262第5版代码适用于所有现代浏览器。如果要支持旧版浏览器,则需要加载任何各种ES5填充程序库