[英]Why cant I iterate over this JavaScript object?
我有这个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, ...];
代码小提琴: https : //jsfiddle.net/zjgb6ez4/
您的逻辑问题是, $.each()
有两个签名:
$(selector).each(function(index,value) {...} // For HTML DOM selectors.
$.each(obj, function(index,value) {...} // For JavaScript Objects & Arrays.
您使用的是jQuery选择器,DOM迭代。 这种方式专门用于迭代JavaScript对象或数组。
此外,因为你需要两个数组。 您不能使用each
或map
函数,因为它们只返回一个数组。 相反,最好使用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 = Object.keys(obj); var arr2 = Object.values(obj); console.log(arr1); console.log(arr2);
注意:
Object.values()
是一种实验技术。 由于此技术的规范尚未稳定,请检查兼容性表以了解各种浏览器的用法。 另请注意,随着规范的更改,实验技术的语法和行为可能会在未来版本的浏览器中发生变化。
没有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 = Object.keys(obj); var arr2 = arr1.map(function (v) { return obj[v]; }); console.log(arr1); console.log(arr2);
使用jQuery迭代普通对象,您需要使用$.each()
。
$.each(obj, function(index,value) {...}
纯Javascript解决方案可能是:
for (var index in obj) {
console.log(index);
console.log(obj[index]);
}
您可以在Object
上使用keys()
和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 = Object.keys(obj);
var arr2 = Object.values(obj);
这是一个简单的JavaScript解决方案,没有jQuery。 但请注意,所有浏览器都不支持values()
方法。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.