Javascript Object.keys和Object.values返回对象的零数组

Javascript Object.keys和Object.values返回对象的零数组,javascript,javascript-objects,Javascript,Javascript Objects,我有一个对象,需要为每个键和值获取一个数组。我使用了Object.keys(也尝试了Object.getOwnPropertyNames())和Object.values(),但都返回了长度为零的数组。我确认对象中确实包含值 下面的代码在JFIDLE中运行良好,但在我的环境中返回了Object.keys和Object.values调用的零长度数组。在这里工作: 我的环境:EclipseNeon,Tomcat8.5。浏览器:在Chrome和IE11上测试 代码或特定环境有什么问题 谢谢 亚历克斯

我有一个对象,需要为每个键和值获取一个数组。我使用了Object.keys(也尝试了Object.getOwnPropertyNames())和Object.values(),但都返回了长度为零的数组。我确认对象中确实包含值

下面的代码在JFIDLE中运行良好,但在我的环境中返回了Object.keys和Object.values调用的零长度数组。在这里工作:

我的环境:EclipseNeon,Tomcat8.5。浏览器:在Chrome和IE11上测试

代码或特定环境有什么问题

谢谢

亚历克斯


您需要使用相同的名称:
pLines
vs
pLines

函数计数(数据){
var pl=data.split(',');
pl.forEach(函数(条目){
普林斯[条目]=(普林斯[条目]| | 0)+1;
});
}
函数createChartData(){
控制台日志(pLines);
控制台日志(对象键(pLines));
console.log(Object.values(pLines));
}
变量pLines={};
var数据=['a','b','c,a,b','a,b'];
数据。forEach(计数);

createChartData()
您需要使用相同的名称:
pLines
vs
pLines

函数计数(数据){
var pl=data.split(',');
pl.forEach(函数(条目){
普林斯[条目]=(普林斯[条目]| | 0)+1;
});
}
函数createChartData(){
控制台日志(pLines);
控制台日志(对象键(pLines));
console.log(Object.values(pLines));
}
变量pLines={};
var数据=['a','b','c,a,b','a,b'];
数据。forEach(计数);

createChartData()您是否在异步函数中获得实际数据?在修复了打字错误(
PLines
!=
PLines
)之后。@Teemu callmewhateyouwant是的,打字错误只是在这里,而不是在我的实际代码中。是的,我猜是这样,否则你就没有日志了。你的意思是你也在链接的fiddle中得到了那些空数组吗?@Teemu callmewhateyouwant JSFDDL中的代码工作得很好。就在我的环境里。请注意,在键()和值()之前的日志调用,它工作得很好。@Teemu callmewhateyouwant谢谢您提供的信息和帮助。你的asyn控制台评论是对的。将需要重新安排执行流。是否将实际数据作为异步函数的结果?在修复了打字错误(
PLines
!=
PLines
)之后。@Teemu callmewhateyouwant是的,打字错误只是在这里,而不是在我的实际代码中。是的,我猜是这样,否则你就没有日志了。你的意思是你也在链接的fiddle中得到了那些空数组吗?@Teemu callmewhateyouwant JSFDDL中的代码工作得很好。就在我的环境里。请注意,在键()和值()之前的日志调用,它工作得很好。@Teemu callmewhateyouwant谢谢您提供的信息和帮助。你的asyn控制台评论是对的。将需要重新安排执行流。
function countPLines(data){
  var pl = data.split(',');

  pl.forEach(function(entry){   
      pLines[entry] = (pLines[entry] || 0) + 1;
  });

}

function createChartData(){
  console.log(pLines); 
  console.log(Object.keys(pLines));
  console.log(Object.values(pLines));
}

var pLines = {};
var data = ['a', 'b', 'c,a,b', 'a,b'];

data.forEach(function(ele) {
    countPLines(ele);
});

createChartData();