gpt4 book ai didi

JavaScript 无法访问对象的属性

转载 作者:行者123 更新时间:2023-12-02 19:26:38 25 4
gpt4 key购买 nike

我有一个对象(从 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) 返回 true,但 mm0两者都返回:

1:{
id:1,
name:"jacob"
}//1 (some integer)

我希望 shift() 返回 1 内部的对象。

当我尝试访问m0.name时,它返回未定义,当我尝试访问m[1]时,它返回未定义。

顺便说一句data.materials["1"].name有效。问题是 1 是变量(我不知道它会是什么,所以我想使用 shift() ,它不适用于对象)。

编辑:因此,makeArray() 内似乎存在限制。 :由于对象属性不应该用数字命名,因此该函数不会转换对象的其余部分,并且输出是某种对象数组混合(您不能使用像 shift( )),所以我想到的快速但肮脏的解决方案是像这样循环它:

var m = data.materials,
id;
for ( key in m ) { id = key; }
console.log( m[id].name );

这并不是那么干净,所以如果有更好的方法,请告诉我。

附: 1:{} 之所以存在,是因为 Controller 在某些条件下返回多个“ Material ”(当使用此 js 时,这种情况永远不会成立)。

最佳答案

您应该使用data.materials["1"].name

http://jsfiddle.net/nq4RE/

雅各布,我看到你更新了你的问题。

要使用变量,您只需调用data.materials[your_variable_here].name

http://jsfiddle.net/nq4RE/1/

关于JavaScript 无法访问对象的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11976308/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com