为什么我不能迭代这个JavaScript对象?

为什么我不能迭代这个JavaScript对象?,javascript,jquery,Javascript,Jquery,我有一个javascript对象 var obj = { '02/08/2016': 2, '03/10/2016': 4, '04/05/2016': 2, '04/06/2016': 35, '04/19/2016': 4, '04/26/2016': 22, '05/09/2016': 15, '05/24/2016': 2, '05/30/2016': 4, '07/14/2016': 7, '08/

我有一个javascript对象

var obj = {
    '02/08/2016': 2,
    '03/10/2016': 4,
    '04/05/2016': 2,
    '04/06/2016': 35,
    '04/19/2016': 4,
    '04/26/2016': 22,
    '05/09/2016': 15,
    '05/24/2016': 2,
    '05/30/2016': 4,
    '07/14/2016': 7,
    '08/18/2016': 200
};

// Does not work
$(obj).each(function(index,value) {
  console.log(index);
  console.log(value);
});

// Does not work, also what does putting it in bracket notation do here?
var labels = $.map(obj, function(index, value) { 
   return [index];  
});
为什么我不能迭代对象?我试图将这些数据放在chart.js的两个单独的数组中(如下所示)

var arr1 = ['02/08/2016', '03/10/2016', '04/05/2016', ..];
var arr2 = [2, 4, 2, ...];
代码小提琴:

您可以在对象上使用键()值()方法

var obj = {
    '02/08/2016': 2,
    '03/10/2016': 4,
    '04/05/2016': 2,
    '04/06/2016': 35,
    '04/19/2016': 4,
    '04/26/2016': 22,
    '05/09/2016': 15,
    '05/24/2016': 2,
    '05/30/2016': 4,
    '07/14/2016': 7,
    '08/18/2016': 200
};
var arr1 = Object.keys(obj);
var arr2 = Object.values(obj);

这是一个简单的JavaScript解决方案,没有jQuery。但是请注意,并非所有浏览器都支持
values()
方法。

您的逻辑问题是,
$。每个()都有两个签名:

$(selector).each(function(index,value) {...} // For HTML DOM selectors.
$.each(obj, function(index,value) {...}      // For JavaScript Objects & Arrays.
您使用的是jQuery选择器,DOM迭代。这种方法专门用于迭代JavaScript对象或数组

另外,因为您需要两个数组。不能为此使用
每个
映射
函数,因为它们只返回一个数组。相反,最好使用
Object.keys
Object.values()

var obj={
'02/08/2016': 2,
'03/10/2016': 4,
'04/05/2016': 2,
'04/06/2016': 35,
'04/19/2016': 4,
'04/26/2016': 22,
'05/09/2016': 15,
'05/24/2016': 2,
'05/30/2016': 4,
'07/14/2016': 7,
'08/18/2016': 200
};
var arr1=对象键(obj);
var arr2=对象值(obj);
控制台日志(arr1);

控制台日志(arr2)使用jQuery在普通对象上迭代,您需要使用
$.each()

纯Javascript解决方案可能是:

for (var index in obj) {
    console.log(index);
    console.log(obj[index]);
}

如果你想使用jQuery,你的代码应该是@4castle,这和$(obj)有什么区别?不是都是jQuery吗?@NightOwl4Life:你刚才不是在另一条评论中引用了jQuery文档吗?
$()
只是用于选择DOM元素。我不知道那些方法存在,不幸的是我仍然得到[0]和[object]。@NightOwl4Life修复了它。@NightOwl4Life我更新了我的答案,请重新检查。顺便说一句,这是纯JavaScript,没有jQuery。你可能想添加
Object.values()
还没有正式发布,而且不是所有浏览器都支持它。为什么我不能?从JQuery文档的“the$.each()函数与$(selector).each()不同,后者用于以独占方式在JQuery对象上迭代。”@NightOwl4Life运行上述代码段,并告诉我它是否有效?@NightOwl4Life您是对的,但有更好的方法。至少你不能使用
map
函数。很抱歉不清楚。@NightOwl4Life
Object.keys()
是一个本机函数,它将键作为数组提供给您
Object.values()
是一个本机函数,它将值作为数组提供给您。@NightOwl4Life添加了另一个代码段,它提供了更好的兼容版本。请看一看。这与$(obj).每个(函数(索引,值)不同吗?@NightOwl4Life您使用的是jQuery选择器,DOM迭代。这种方法专门用于迭代JavaScript对象或数组。@NightOwl4Life您不需要选择器-您已经拥有了您需要的数据need@NightOwl4Life,是的,这是正确的答案方法:和:@PraveenKumar,这会彻底清除它。非常感谢。
for (var index in obj) {
    console.log(index);
    console.log(obj[index]);
}