使用js,根據數組中對象屬性值的不同將數組進行分組-3

需求:將下面數組-對象中的index_name相同的對象抽離出來,放入一個新數組中

let tempArr = [
  { domain: 'a', index_name: '雲淡風輕' },
  { domain: 'b', index_name: '遞歸' },
  { domain: 'c', index_name: '雲淡風輕' },
  { domain: 'd', index_name: '遍歷' },
  { domain: 'e', index_name: '雲淡風輕' },
  { domain: 'f', index_name: '雲淡風輕' },
  { domain: 'g', index_name: '遞歸' }
]

解決辦法3:

const formateArrData3 = (initialArr, pro) => {
  // 判定傳參是否符合規則
  if (!(initialArr instanceof Array)) {
    return "請傳入正確格式的數組";
  }
  if (!pro) {
    return "請傳入對象屬性";
  }
  return initialArr.reduce((acc, item) => {
    let currentVal = item[pro];  
    if (!acc[currentVal]) {
      acc[currentVal] = [];
    }
    acc[currentVal].push(item);
    return acc;
  }, {});
}
console.log(formateArrData3(tempArr, 'index_name'))

參考:MDN的reduce方法

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章