我想補充propertyA如果對象propertyB匹配添加propertyA如果對象propertyB匹配
以前
usa = [{fifa:"1", year:2000},{fifa:"3", year:2000},{fifa:"5", year:2010},{fifa:"2", year:2000},{fifa:"4", year:2010}];
usa = [{fifa:"6", year:2000},{fifa:"9", year:2010}];
我想補充propertyA如果對象propertyB匹配添加propertyA如果對象propertyB匹配
以前
usa = [{fifa:"1", year:2000},{fifa:"3", year:2000},{fifa:"5", year:2010},{fifa:"2", year:2000},{fifa:"4", year:2010}];
usa = [{fifa:"6", year:2000},{fifa:"9", year:2010}];
這是一個解決方案之後。不是很優雅,但它的工作原理:
usa.reduce((acc, current) => {
const f = acc.find(c => c.year == current.year)
if (f) {
f.fifa = parseInt(f.fifa, 10) + parseInt(current.fifa, 10)
} else {
acc.push({
year: current.year,
fifa: parseInt(current.fifa, 10).toString()
})
}
return acc
}, [])
您可以驗證您的數組的值與usa[index].fifa == "2"
或usa[index].year == 2000
,如果它有一定的價值相匹配,通過push()方法
if (usa[index].year == 2000) {
usa.push({fifa: "32", year: 2001})
}
嘗試添加屬性這個:
function add_propertyA_if_propertyB(array)
{
var arrayTmp = new Array();
var arrayYears = new Array();
for(int i=0;i<array.length;i++)
{
if(!arrayTmp[array[i].year]){
arrayTmp[array[i].year] = array[i].fifa;
arrayYears.push(array[i].year);
}
else
arrayTmp[array[i].year] += array[i].fifa;
}
var arrayResult = new Array();
for(int i=0;i<arrayYears.length;i++)
{
arrayResult.push(new {year:arrayYears[i], fifa:arrayTmp[arrayYears[i]]});
}
return arrayResult;
}
爲什麼這不優雅? – evolutionxbox
我不喜歡'if'和多個'parseInt'。 :-) – ema