Javascript 使用for in循环获取特定属性
“for-in”循环是否仅限于显示属性名称及其第一个值,或者是否有办法让您看到它们的值?比如说, 如果我想检查位于“favBooks”对象中的“no1”对象内部的“titles”属性值,我可以在循环中使用for吗 我试着这样做:Javascript 使用for in循环获取特定属性,javascript,for-in-loop,Javascript,For In Loop,“for-in”循环是否仅限于显示属性名称及其第一个值,或者是否有办法让您看到它们的值?比如说, 如果我想检查位于“favBooks”对象中的“no1”对象内部的“titles”属性值,我可以在循环中使用for吗 我试着这样做: var favBooks = { no1:{Title:'Sidhartha',Author:'Hesse'}, no2:{Title:'Cosmos',Author:'Sagan'}, no3:{Title:'Idiot',Author:'Dostojev
var favBooks = {
no1:{Title:'Sidhartha',Author:'Hesse'},
no2:{Title:'Cosmos',Author:'Sagan'},
no3:{Title:'Idiot',Author:'Dostojevski'}
}
然后只调用带有for in的标题:
for(t in favBooks) console.log(favBooks[t.title]);
…但它返回未定义的
我知道还有其他方法可以做到这一点,但我的问题是:这是“for in”的局限性吗?只返回属性名及其第一个值,还是可以深入了解属性,如果是,如何
谢谢问题已经解决了 日志(favBooks[t.title])` 除了使用“title”而不是“title”(javascript区分大小写),属性“title”不是对象favBooks的索引。你也许可以用favBooks[“no1”](我没有试过),但你绝对可以用favBooks.no1 乙二醇 所以我认为最后一行应该是:
for(t in favBooks) console.log(favBooks[t].Title); // logs the Title property
下面的函数通过一个javascript对象运行,并对其进行字符串表示。如果您对结果发出警告,它将显示对象的结构。
它还使用
for (X in el)
其中el是任何对象-无论是html文档中的DIV元素还是{a:b,c:d}类型的对象
也许这会有帮助
function dump(el) {
var s=""; //
for (X in el) {
if (el[X]) {var sX=el[X].toString(); s+=X+": "+el[X] + "<br>\n"}
}
return s
}
功能转储(el){
var s=“”;//
对于(X在el中){
if(el[X]){var sX=el[X].toString();s+=X+“:“+el[X]+”
\n”}
}
返回s
}
问题就在眼前
日志(favBooks[t.title])`
除了使用“title”而不是“title”(javascript区分大小写),属性“title”不是对象favBooks的索引。你也许可以用favBooks[“no1”](我没有试过),但你绝对可以用favBooks.no1
乙二醇
所以我认为最后一行应该是:
for(t in favBooks) console.log(favBooks[t].Title); // logs the Title property
下面的函数通过一个javascript对象运行,并对其进行字符串表示。如果您对结果发出警告,它将显示对象的结构。
它还使用
for (X in el)
其中el是任何对象-无论是html文档中的DIV元素还是{a:b,c:d}类型的对象
也许这会有帮助
function dump(el) {
var s=""; //
for (X in el) {
if (el[X]) {var sX=el[X].toString(); s+=X+": "+el[X] + "<br>\n"}
}
return s
}
功能转储(el){
var s=“”;//
对于(X在el中){
if(el[X]){var sX=el[X].toString();s+=X+“:“+el[X]+”
\n”}
}
返回s
}
也许您想要更接近PHP的东西foreach($key=>$value的数组)
:
var favBooks=[//也许您想要更接近PHP的东西foreach($key=>array$value)
:
var favBooks=[/Title不是Title
(大写)。favBooks[t.Title]
会很好。这个问题似乎离题了,因为问题基本上是一个打字错误。这不仅仅是一个打字错误,问题是从对象访问数据的方式。尝试更改favBooks[t.Title]
tofavBooks[t]。Title
@AshishKumar,是的,这就是问题所在,我只是在堆栈上提问时才打字。但这是访问数据的方式,我不知道如何编写。非常感谢。干杯!Title不是Title
(大写)。favBooks[t.Title]
将很好地解决此问题似乎与主题无关,因为问题基本上是一个输入错误。这不仅仅是一个输入错误,问题是从对象访问数据的方式。尝试将favBooks[t.title]
更改为favBooks[t].Title
@AshishKumar,是的,这就是问题所在,我只是在堆栈上提问时才打字。但这是我不知道如何编写的访问数据的方式。谢谢你。干杯!