Javascript console.log返回[对象]
我从javascript开始,我遇到了这个问题,我试图返回并数组数据,但当我控制台日志时,我得到“[object object][object]” 这是我必须处理的数据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
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);