• 使用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")) //新增
  • 相关阅读:
    JMeter压力测试入门教程[图文]
    从技术转管理的困惑
    APP纯黑盒测试—某些可以试试的操作
    测试网站访问速度的方法(GTmetrix)
    【转】web测试技术经典案例(基础、全面)
    【转】H5页面的测试点总结
    【转】测试思考之——思想有多远,你就能走多远
    【转】测试趋势之我的观点
    线程学习一
    继承log4.net的类
  • 原文地址:https://www.cnblogs.com/Samuel-Leung/p/14467912.html
Copyright © 2020-2023  润新知