假设我有这段代码:
var simple = {
Cicatrix: ["Rock", "Bottom", "Stunner"],
Yen_Sid: ["Pirate", "Heroes", "Power"],
};
调用Rock,Bottom,Stunner等很容易。
document.write(simple.Cicatrix[0]);
然而,如果我想得到Cicatrix和Yen_Sid这个词怎么办?我希望它们被调用,因为我将它们用作菜单。
也可以在数组名称中包含空格吗?就像Yen_Sid转向Yen Sid一样。或者我应该做.replace?
答案 0 :(得分:1)
只需使用for循环通过替换simple
。
var simple = {
Cicatrix: ["Rock", "Bottom", "Stunner"],
Yen_Sid: ["Pirate", "Heroes", "Power"],
};
for(x in simple)
console.log(x.replace('_',' '));
答案 1 :(得分:1)
这允许您迭代对象的属性
for (var property in object) {
if (object.hasOwnProperty(property)) {
// do stuff
}
}
除非你使用像
这样的双引号,否则你不可能在对象表示法属性名称中有空格。obj = {"prop 1": [1,2,3]}
var t = obj["prop 1"]
答案 2 :(得分:1)
对于您的第一个问题,可以使用Object.keys()方法将密钥作为字符串。我不打算在这里写例子,因为我之前提供的文档有很多片段,告诉你如何使用它。其他解决方案是使用for
循环来循环键,正如Matthew Christianson在其他答案中指出的那样。
是的,您可以拥有以空格命名的密钥,但是当您调用它们时,请务必使用object.[property]
表示法,例如:
var x = {
"a b c" : 1234
}
console.log(x["a b c"]); // will log "1234" to Console!
我不建议您使用带空格的名称,因为在我看来,使用括号表示法会使代码变得有点混乱。但您可以创建另一个对象,其键是主对象的键,值是正确的拼写名称,如:
var names = {
YenSid : "Yen Sid",
SomeName : "Some name",
SomeOtherName : "Some other name"
}
var properObject = {
YenSid = 123,
SomeName = 456,
SomeOtherName = 789
}
要获得正确的名称,请使用names.YenSid
答案 3 :(得分:1)
是的,你可以在属性名称中包含空格,你只需要一个分隔符:
var simple = {
Cicatrix: ["Rock", "Bottom", "Stunner"],
"Yen Sid": ["Pirate", "Heroes", "Power"],
};
但是,如果要按特定顺序循环输出项目,则不希望它们作为对象属性,而是将它们作为数组中的项目。对象中的属性没有特定的顺序,因此当您循环输出属性时,顺序取决于浏览器中的实现,而不同的浏览器将以不同的顺序为您提供属性。
var simple = [
{ name: "Cicatrix", items: ["Rock", "Bottom", "Stunner"] },
{ name: "Yen Sid", items: ["Pirate", "Heroes", "Power"] }
];
要遍历项目和子项,您只需要一个嵌套循环:
for (var i = 0; i < simple.length; i++) {
// menu item is in simple[i].name
// subitems are in simple[i].items:
for (var j = 0; j < simple[i].items.length; j++) {
// subitem is in simple[i].items[j]
}
}
答案 4 :(得分:1)
试试这个,这是一个如何将数组打印成字符串的例子。
var text = "";
$.each(simple, function(k) {
text = text + "// " + k + " contains: ";
for ( var i = 0, l = $(this).length; i < l; i++ ) {
text = text + $(this)[i] + ", ";
}
});
console.log(text);