【发布时间】:2020-05-28 22:05:50
【问题描述】:
为什么 accumulator.push 无效?累加器是一个空数组!?如果我使用预定义变量flarArray,一切正常!!我知道如果reduce回调中没有包含初始值,那么它将使用数组中的第一项(在我的情况下将是一个对象)作为累加器,但是如果我告诉它从一个数组开始作为累加器,这有什么问题?
const profiles = [
{
id: 1,
userID: '1',
favoriteMovieID: '1',
},
{
id: 2,
userID: '2',
favoriteMovieID: '1',
}
];
const users = {
1: {
id: 1,
name: 'Jane Cruz',
userName: 'coder',
},
2: {
id: 2,
name: 'Matthew Johnson',
userName: 'mpage',
}
};
const movies = {
1: {
id: 1,
name: 'Planet Earth 1',
},
2: {
id: 2,
name: 'Selma',
}
};
let flatArray = [];
const flattenedProfiles = profiles.reduce(function(accumulator, currentProfile) {
return accumulator.push({id: currentProfile.id, name: users[currentProfile.id].name, favoriteMovie: movies[currentProfile.favoriteMovieID].name})
},[]);
【问题讨论】:
-
push()方法返回数组的新长度,所以在你的回调中你返回的是一个整数而不是累加器。你需要把return accumulator.push({ ... })改成accumulator.push({ ... }); return accumulator;
标签: javascript arrays