Javascript console.log返回[对象]

Javascript console.log返回[对象],javascript,Javascript,我从javascript开始,我遇到了这个问题,我试图返回并数组数据,但当我控制台日志时,我得到“[object object][object]” 这是我必须处理的数据 var MARKDATA = { "SOR": { "mark": [ { "data": { "2015": 21.680000, "2016": 23.739999, "2017": 23.760000 }, "markName": "s

我从javascript开始,我遇到了这个问题,我试图返回并数组数据,但当我控制台日志时,我得到“[object object][object]”

这是我必须处理的数据

var MARKDATA = {
 "SOR": {
   "mark": [
    {
     "data": {
       "2015": 21.680000,
       "2016": 23.739999,
       "2017": 23.760000
     },
     "markName": "swimming",
     "markCode": "SWM"
   },
   {
    "data": {
       "2015": "",
       "2016": 61.55429840,
       "2017": 61.482299804
     },
     "markName": "running (time)",
     "indicatorCode": "RM"
   }
  ]
 } 
};
这就是我试过的

const valuesArr= MARKDATA.SOR.mark;

let acum= '';
const showData = arr => {
 const dataArr= arr.map(value => value.data).join('') 
 acum += dataArr;
};
showData(valuesArr);

console.log(acum)
我想让控制台日志返回和数组,其中包含年份和对象数据的值,我想做的是使用这个数组用reduce方法计算每个数据的平均值


或者,如果有人知道一种更好的方法来获取对象数据的平均值,我将对此表示赞赏

您当前的代码正在构建一个字符串,明确地说:

  • 使用字符串(
    ''
    )初始化
    acum
  • 您可以对
    map
    操作的结果调用
    join(“”)
    (这将创建一个字符串)
由于
map
正在创建一个对象数组,因此在taht数组上调用
join
会隐式调用这些对象上的
toString
。在这种情况下,没有特殊
toString
行为的对象返回
“[object object]”

如果需要
数据的数组
内容,则需要在数组级别工作:

let acum = []; // <== An array
const showData = arr => {
    const dataArr= arr.map(value => value.data); // <== No join('')
    acum.push(...dataArr); // <== Appending to the array
};
showData(valuesArr);

console.log(acum);
您可以将其硬塞入
reduce
(因为您可以将任何数组操作硬塞入
reduce
),但它不会为您带来任何好处:

let acum = valuesArr.reduce((a, {data}) => {
    a.push(...data);
    return a;
}, []);

console.log(acum);
或者(但这仍然毫无意义地创建了一个额外的数组),您可以使用建议的但仍然是Stage-3:


“我想要控制台日志返回和数组…”嗯?您正在使用字符串(
'
)初始化
acum
,然后使用
+=
+=
正在进行字符串连接。您希望
join
做什么?您正在连接一个对象数组,因此js调用它们上面的toString,这将为每个对象返回字符串对象
let acum = valuesArr.reduce((a, {data}) => {
    a.push(...data);
    return a;
}, []);

console.log(acum);
let acum = valueArr.map(({data}) => data).flat();

console.log(acum);