使用js,根據屬性值判斷對象數組中是否有某個對象,有則替換無則添加


/**
 * 判斷數組對象中是否有某個對象,有則替換無則添加
 * @param {*} initialArr 源數組
 * @param {*} obj 判定的對象
 * @param {*} pro 對象中的某個屬性名(唯一,通常為id)
 */
export const formateArrObjData = (initialArr, obj, pro) => {
  // 判定數據是否為數組
  if (!(initialArr instanceof Array)) {
    return '請傳入正確格式的數組'
  }
  // 判定數據是否為對象
  if (!(obj instanceof Object)) {
    return '請傳入正確格式的對象'
  }
  if (!pro) {
    return '請傳入正確格式的屬性名'
  }
 
  let index = initialArr.findIndex((val) => val[pro] === obj[pro])
  // 如果有就替換  沒有就添加
  if (initialArr.findIndex((val) => val[pro] === obj[pro]) !== -1) {
    tempArr.splice(index, 1, obj);
  } else {
    tempArr.push(obj);
  }
  return tempArr
}
 
使用:this.tableArr = formateArrObjData(this.tableArr, tempObj, tempId)
// 這里的源數組如果是一維的,可以用擴展運算符、Object.assign()拷貝
let tempArr = [
  { id: "a", index_name: "曉看天色" },
  { id: "b", index_name: "暮看雲" },
  { id: "c", index_name: "春賞百花" },
  { id: "d", index_name: "東賞雪" },
  { id: "e", index_name: "寵辱不驚" },
  { id: "f", index_name: "去留無意" },
  { id: "g", index_name: "再會" },
];
let tempObjA = { id: "f", index_name: "遇見" };
let tempObjB = { id: "m", index_name: "遇見" };
 
console.log(formateArrObjData(tempArr, tempObjA, "id")) //替換
console.log(formateArrObjData(tempArr, tempObjB, "id")) //新增

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM