Javascript 对通过对象循环访问字段感到困惑
我正在从控制器接收数据,当我输入console.log时,该数据如下所示:Javascript 对通过对象循环访问字段感到困惑,javascript,jquery,Javascript,Jquery,我正在从控制器接收数据,当我输入console.log时,该数据如下所示: {1: {…}, 2: {…}, 3: {…}} 1: {datasetID: 1, title: "Adirondack Trout Survey", year: "2015", ADD-startYr: "2015", ADD-endYr: "2015", …} 2: {datasetID: 2, title: "Adiro
{1: {…}, 2: {…}, 3: {…}}
1: {datasetID: 1, title: "Adirondack Trout Survey", year: "2015", ADD-startYr: "2015", ADD-endYr: "2015", …}
2: {datasetID: 2, title: "Adirondack Trout Survey", year: "2016", ADD-startYr: "2016", ADD-endYr: "2016", …}
3: {datasetID: 3, title: "Adirondack Trout Survey", year: "2017", ADD-startYr: "2017", ADD-endYr: "2017", …}
我正在尝试访问DataSetID,这是我的尝试:
$(数据)。每个(函数(i,d){
console.log(d.datasetID);
}
但是我得到了未定义的返回。我不确定如何循环通过该对象并获取数据集ID
谢谢!您正在使用$(数据)。每个但您需要的是$。每个()都有相同的回调代码。尝试使用:
$.each( data, function(i, d) {
console.log(d.datasetID);
});
输出将是:
1
2
3
它是一个具有索引道具访问权限的对象,如下所示
for (const index in data) {
console.log(data[index].datasetID);
}
快速回答:您使用了错误的jQuery“each”方法。
而不是:
$(myObject).each(function(i, d) // ...
你想要的是:
$.each(myObject, function(key, val) // ...
完整代码:
$.each(data, function(key, val){
console.log(val.datasetID); // val, in this case, is your nested object
});
请参见与文档的区别:
香草版
您也可以在不使用jQuery的情况下通过如下方法使用Object.keys
来完成此操作:
Object.keys(myObject).forEach(function(key) {
var val = myObject[key];
// ... do the things ...
});
只要确保你有浏览器支持就行了
干杯!从记录d
开始,看看你在用什么-然后从这里开始,为什么这是一个具有数字属性的对象来存储对象?为什么不是一个对象数组?我尝试了console.log(d)由于某种原因,它会返回与数据相同的数据……我没有编写控制器,因此无法访问数据的返回方式。我的想法是一样的,但它没有:。也就是说,我更喜欢使用forEach()
不必要地将jQuery包含在JS结构中循环,但这确实有效。对于不同的用例,它们是不同的函数。$。每个
都是一个通用迭代器;$(选择器)。每个
都用于使用DOM元素对jQuery对象进行迭代。请参阅相应的文档:也可以使用Object.values()
,则不需要var val=myObject[key]
Object.keys(myObject).forEach(function(key) {
var val = myObject[key];
// ... do the things ...
});