Javascript 对通过对象循环访问字段感到困惑

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

我正在从控制器接收数据,当我输入console.log时,该数据如下所示:

{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 ...

});