Javascript ES6处理对象(减少函数)
罗马尼亚的问候, 给定一个游戏列表,这些对象看起来像:Javascript ES6处理对象(减少函数),javascript,function,object,ecmascript-6,Javascript,Function,Object,Ecmascript 6,罗马尼亚的问候, 给定一个游戏列表,这些对象看起来像: { "id": 112814, "matches": "123", "tries": "11" } 返回这样一个对象 { "totalMatches": m, "totalTries": y } 其中m是所有游戏的所有匹配的总和 t是所有游戏的所有尝试的总和 input = [ {"id": 1,"matches": "123","tries": "11"}, {
{
"id": 112814,
"matches": "123",
"tries": "11"
}
返回这样一个对象
{
"totalMatches": m,
"totalTries": y
}
其中m是所有游戏的所有匹配的总和
t是所有游戏的所有尝试的总和
input = [
{"id": 1,"matches": "123","tries": "11"},
{"id": 2,"matches": "1","tries": "1"},
{"id": 3,"matches": "2","tries": "5"}
]
output = {
matches: 126,
tries: 17
}
我目前拥有的:
function countStats(list) {
return {
matches: 0,
tries: 0
};
}
我认为我需要做的是:
const输入=[
{“id”:1,“匹配”:“123”,“尝试”:“11”},
{“id”:2,“匹配”:“1”,“尝试”:“1”},
{“id”:3,“匹配”:“2”,“尝试”:“5”}
];
const result=input.reduce((结果、条目)=>{
result.matches+=+entry.matches;
result.trys+=+entry.trys;
返回结果;
},{匹配:0,尝试:0});
控制台日志(结果)代码>您可以利用:
const输入=[
{“id”:1,“匹配”:“123”,“尝试”:“11”},
{“id”:2,“匹配”:“1”,“尝试”:“1”},
{“id”:3,“匹配”:“2”,“尝试”:“5”}
];
const result=input.reduce((结果、条目)=>{
result.matches+=+entry.matches;
result.trys+=+entry.trys;
返回结果;
},{匹配:0,尝试:0});
控制台日志(结果)代码>应在以下字段上使用:
function countStats (list) {
return {
matches: input.reduce((a, b) => +a + +b.matches, 0),
tries: input.reduce((a, b) => +a + +b.tries, 0)
}
}
请参阅将字符串作为数字求和的语法糖,即应在以下字段中使用的+a++b
:
function countStats (list) {
return {
matches: input.reduce((a, b) => +a + +b.matches, 0),
tries: input.reduce((a, b) => +a + +b.tries, 0)
}
}
请参见将字符串作为数字求和的语法糖,即+a++b
您可以为结果获取一个对象,并获取用于稍后迭代数组的键和用于添加相同键值的键
var-input=[{id:1,匹配:“123”,尝试:“11”},{id:2,匹配:“1”,尝试:“1”},{id:3,匹配:“2”,尝试:“5”},
输出={匹配:0,尝试:0},
keys=对象。keys(输出);
input.forEach(o=>keys.forEach(k=>output[k]+=+o[k]);
控制台日志(输出)代码>您可以为结果获取一个具有零值的对象,获取用于以后迭代数组的键,以及用于添加相同键值的键
var-input=[{id:1,匹配:“123”,尝试:“11”},{id:2,匹配:“1”,尝试:“1”},{id:3,匹配:“2”,尝试:“5”},
输出={匹配:0,尝试:0},
keys=对象。keys(输出);
input.forEach(o=>keys.forEach(k=>output[k]+=+o[k]);
控制台日志(输出)代码>以下是一种干净的方法:
const游戏=[
{id:1,匹配:'123',尝试:'11'},
{id:2,匹配:'1',尝试:'1'},
{id:3,匹配:'2',尝试:'5'},
];
const reduced=games.reduce(
(累加器,游戏)=>({
totalMatches:accumulator.totalMatches+数字(game.matches),
总尝试次数:累加器。总尝试次数+数字(游戏。尝试次数),
}),
{totalMatches:0,TotalTrys:0}
);
控制台日志(减少)代码>以下是一种干净的方法:
const游戏=[
{id:1,匹配:'123',尝试:'11'},
{id:2,匹配:'1',尝试:'1'},
{id:3,匹配:'2',尝试:'5'},
];
const reduced=games.reduce(
(累加器,游戏)=>({
totalMatches:accumulator.totalMatches+数字(game.matches),
总尝试次数:累加器。总尝试次数+数字(游戏。尝试次数),
}),
{totalMatches:0,TotalTrys:0}
);
控制台日志(减少)代码>
输入=[
{“id”:1,“匹配”:“123”,“尝试”:“11”},
{“id”:2,“匹配”:“1”,“尝试”:“1”},
{“id”:3,“匹配”:“2”,“尝试”:“5”}
]
让totalMatches=0;
设totaltrys=0;
让output=input.reduce({totalMatches,totaltrytes},{matches,trytes})=>{
totalMatches+=+匹配项;
总尝试次数+=+尝试次数;
返回{totalMatches,TotalTrys}
},{totalMatches:0,TotalTrys:0});
console.log(输出)
输入=[
{“id”:1,“匹配”:“123”,“尝试”:“11”},
{“id”:2,“匹配”:“1”,“尝试”:“1”},
{“id”:3,“匹配”:“2”,“尝试”:“5”}
]
让totalMatches=0;
设totaltrys=0;
让output=input.reduce({totalMatches,totaltrytes},{matches,trytes})=>{
totalMatches+=+匹配项;
总尝试次数+=+尝试次数;
返回{totalMatches,TotalTrys}
},{totalMatches:0,TotalTrys:0});
console.log(output)
谢谢,这是我想要的格式。你能不能把参数a,b指的是什么分解一下?结尾0是什么?a
和b
是内联匿名函数的变量。他们的名字确实是武断的。零是偏移值,表示我们的运算(和)的初始值为零的情况。通常可以省略它,但是对于这个特定的情况,它是必需的,否则我们将以一个字符串开始,这将搞乱结果。谢谢,这是我所想到的格式。你能不能把参数a,b指的是什么分解一下?结尾0是什么?a
和b
是内联匿名函数的变量。他们的名字确实是武断的。零是偏移值,表示我们的运算(和)的初始值为零的情况。通常可以省略它,但是对于这个特定的情况,它是必需的,否则我们将从一个字符串开始,这将搞乱结果。