• 使用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")) //新增
  • 相关阅读:
    OSG节点访问和遍历
    osg ifc数据渲染着色器
    osg qt kdchart 开发施工过程模拟软件
    KDChart example
    Qt kdChart 甘特图案例
    Qt KDChart编译
    osg 3ds模型加载与操作
    osg 三维模型加载与解析(fbx、3ds、ive、obj、osg)
    osg fbx 模型结构操作
    osg fbx 模型树结构
  • 原文地址:https://www.cnblogs.com/Samuel-Leung/p/14467912.html
Copyright © 2020-2023  润新知