1. 程式人生 > 其它 >ts-物件陣列reduce-陣列轉物件陣列

ts-物件陣列reduce-陣列轉物件陣列

將字串陣列轉化成{name:xxx,count:xxx}[]陣列的程式碼

#定義資料型別
interface CartInfo{
  name:string,
  count:number
}
let rawItemArray:string[] = ["aa", "aa", "bb", "cc"]
let cartArray = rawItemArray.reduce((resultArray:CartInfo[], curItem:string):CartInfo[]=>{
  let existingItem = resultArray.find(it => it.name === item)

  if(!existingItem){
    resultArray.push({name:item, count:1})
  }else{
    existingItem.count += 1
  }

  return resultArray
},[])

reduce是js中陣列的資料處理方法

  • array.reduce(function(total, currentValue, currentIndex, arr), initialValue)
  • total:必需。初始值, 或者計算結束後的返回值。
  • currentValue:必需。當前元素
  • currentIndex:可選。當前元素的索引
  • arr:可選。當前元素所屬的陣列物件。
  • initialValue:可選。傳遞給函式的初始值

計算陣列中元素的和

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>菜鳥教程(runoob.com)</title>
</head>
<body>

<p>點選按鈕後對陣列元素進行四捨五入並計算總和。</p>
<button onclick="myFunction()">點我</button>

<p>陣列元素之和: <span id="demo"></span></p>

<script>
var numbers = [15.5, 2.3, 1.1, 4.7];

function getSum(total, num) {
    return total + Math.round(num);
}
function myFunction(item) {
    document.getElementById("demo").innerHTML = numbers.reduce(getSum, 0);
}
</script>

</body>
</html>