我有一个看起来像这样的对象(从 jQuery ajax 返回):
data:{
materials:{
1:{
id:1,
name:"jacob"
}//1 (some integer)
}//materials
}//data
我正在尝试访问name
,但无法通过对象1
。我试过makeArray()
这样使用
var m = $.makeArray(data.materials);
var m0 = m.shift();
console.log(m);
console.log(m0);
$isArray(m)
&$.isArray(m0)
返回真,但m
两者m0
都返回:
1:{
id:1,
name:"jacob"
}//1 (some integer)
我希望这shift()
能返回1
.
当我尝试访问m0.name
时返回未定义,当我尝试访问m[1]
时返回未定义。
顺便说一句data.materials["1"].name
有效。问题是1
可变的(我不知道它会是什么,所以我想使用shift()
对对象不起作用的)。
编辑:所以似乎有一个限制makeArray()
:由于对象属性不应该用数字命名,因此该函数不会转换对象的其余部分,并且输出是某种对象数组混合(在你不能使用像shift()
)这样的数组函数,所以我想到的快速n脏解决方案是像这样循环遍历它:
var m = data.materials,
id;
for ( key in m ) { id = key; }
console.log( m[id].name );
它不是那么干净,所以如果有更好的方法,请告诉我。
ps1:{}
之所以存在,是因为控制器在某些条件下会返回多个“材质”(使用此js时永远不会为真)。