Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/420.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
不理解JavaScript Reduce为什么不返回长度为3的对象_Javascript - Fatal编程技术网

不理解JavaScript Reduce为什么不返回长度为3的对象

不理解JavaScript Reduce为什么不返回长度为3的对象,javascript,Javascript,我有一个简单的reduce示例,它返回的长度是2,而不是3。为什么?我原以为它会在这三个过程中迭代 const会话=[{ “id”:101, “会话ID”:6182, “注意力价值”:2 }, { “id”:102, “会话ID”:6183, “attendvalue”:0 }, { “id”:103, “会话ID”:6184, “注意力价值”:1 } ]; const sessionsObj=sessions.reduce((acc,cur)=>{ acc[当前会话ID]=当前; 返回acc

我有一个简单的reduce示例,它返回的长度是2,而不是3。为什么?我原以为它会在这三个过程中迭代

const会话=[{
“id”:101,
“会话ID”:6182,
“注意力价值”:2
},
{
“id”:102,
“会话ID”:6183,
“attendvalue”:0
},
{
“id”:103,
“会话ID”:6184,
“注意力价值”:1
}
];
const sessionsObj=sessions.reduce((acc,cur)=>{
acc[当前会话ID]=当前;
返回acc;
});

console.log(sessionsObj.length)您没有设置起始对象,这是reduce中的第二个参数

此外,还需要使用
Object.keys
来计算项目数

试着这样做:

const会话=[{
“id”:101,
“会话ID”:6182,
“注意力价值”:2
},
{
“id”:102,
“会话ID”:6183,
“attendvalue”:0
},
{
“id”:103,
“会话ID”:6184,
“注意力价值”:1
}
];
const sessionsObj=sessions.reduce((acc,cur)=>{
acc[当前会话ID]=当前;
返回acc;
}, {});

log(Object.keys(sessionsObj.length)您没有设置起始对象,这是reduce中的第二个参数

此外,还需要使用
Object.keys
来计算项目数

试着这样做:

const会话=[{
“id”:101,
“会话ID”:6182,
“注意力价值”:2
},
{
“id”:102,
“会话ID”:6183,
“attendvalue”:0
},
{
“id”:103,
“会话ID”:6184,
“注意力价值”:1
}
];
const sessionsObj=sessions.reduce((acc,cur)=>{
acc[当前会话ID]=当前;
返回acc;
}, {});

log(Object.keys(sessionsObj.length)您需要传递初始值:

初始值|
可选

值用作回调的第一个调用的第一个参数
如果未提供初始值,将使用数组中的第一个元素
。调用没有初始值的空数组是错误的

实际上,结果将是一个具有更多属性的对象

const sessions=[{“id”:101,“sessionId”:6182,“attendvalue”:2},{“id”:102,“sessionId”:6183,“attendvalue”:0},{“id”:103,“sessionId”:6184,“attendvalue”:1}];
const sessionsObj=sessions.reduce((acc,cur)=>{
acc[当前会话ID]=当前;
返回acc;
}, { });
//  ^
//  |
//+----初始值
log(Object.values(sessionsObj.length)

.as控制台包装{max height:100%!important;top:0;}
您需要传递初始值:

初始值|
可选

值用作回调的第一个调用的第一个参数
如果未提供初始值,将使用数组中的第一个元素
。调用没有初始值的空数组是错误的

实际上,结果将是一个具有更多属性的对象

const sessions=[{“id”:101,“sessionId”:6182,“attendvalue”:2},{“id”:102,“sessionId”:6183,“attendvalue”:0},{“id”:103,“sessionId”:6184,“attendvalue”:1}];
const sessionsObj=sessions.reduce((acc,cur)=>{
acc[当前会话ID]=当前;
返回acc;
}, { });
//  ^
//  |
//+----初始值
log(Object.values(sessionsObj.length)

.as console wrapper{max height:100%!important;top:0;}
由于缺少初始值
reduce(acc,{})
,请执行
console.log(sessions)
以查看初始值的变化!因为您缺少初始值
reduce(acc,{})
,请执行
console.log(sessions)
以查看初始值的变化!长度无效吗?如果不是,为什么?@Pete键值对对象没有属性
length
。length无效吗?如果不是,为什么?@Pete键值对对象没有属性
length