微信小程序:怎么在一个js中修改另一个js的数据(这里通过缓存进行实现)

实例:现有两个页面index.js和category.js,我现在想在index.js中修改category.js的数据

初始数据

javascript 复制代码
category = [{
        name: '物流配送',
        list: [{
          id: 1,
          job: '外卖骑手',
          checked: true
        }, {
          id: 2,
          job: '快递员',
          checked: false
        }, {
          id: 3,
          job: '司机',
          checked: false
        }, {
          id: 4,
          job: '网约车司机',
          checked: true
        }, {
          id: 5,
          job: '货运司机',
          checked: false
        }]
      },
      {
        name: '仓储',
        list: [{
          id: 1,
          job: '分拣打包扫描',
          checked: false
        }, {
          id: 2,
          job: '叉车工',
          checked: false
        }]
      },
      {
        name: '安保',
        list: [{
          id: 1,
          job: '保安',
          checked: false
        }],
      }
  ];

修改页面代码-index.js

我现在已知的是name的值和id值,我需要修改对应name下list中对应id所对应的checked的值

引入存数据的页面category.js

javascript 复制代码
import category from '../../utils/category'

修改数据

方法中进行数据的修改,并将数据存入缓存

javascript 复制代码
select_position: function (e) {
  var id = e.currentTarget.dataset.id;//获取的id值
  var name = e.currentTarget.dataset.name;//获取的name值
  //查询所选的全部元素
  console.log(category)
  //查询category中对应的name项
  const item = category.find(item => item.name === name);
  if (item) {
    //查询对应name项下list对应的id项
    const sonitem = (item.list).find(sonitem => sonitem.id === id);
    //如果该项存在,将该项的checked值修改为与之相反的值
    if (sonitem) {
      sonitem.checked = !sonitem.checked;
    } else {
      console.log('没找到对应id值');
    }
  } else {
    console.log('没找到对应');
  }
  //延迟一秒后将数据存入缓存
  setTimeout(() => {
    wx.setStorageSync('category', JSON.stringify(category));
  }, 1000);   
},

数据页面代码category.js

判断缓存中是否有数据,如果有数据就执行缓存中的数据,如果没有就执行原始数据

javascript 复制代码
//定义一个数据用于存入数据
let category = []
// 从本地缓存中读取数据
const cachedCategory = wx.getStorageSync('category');
if (cachedCategory) {
  // 如果本地缓存中有数据,则将其赋值给 category 变量
  category = JSON.parse(cachedCategory);
} else {
  // 如果本地缓存中没有数据,则使用默认的 category 数组
  category = [{
        name: '物流配送',
        list: [{
          id: 1,
          job: '外卖骑手',
          checked: true
        }, {
          id: 2,
          job: '快递员',
          checked: false
        }, {
          id: 3,
          job: '司机',
          checked: false
        }, {
          id: 4,
          job: '网约车司机',
          checked: true
        }, {
          id: 5,
          job: '货运司机',
          checked: false
        }]
      },
      {
        name: '仓储',
        list: [{
          id: 1,
          job: '分拣打包扫描',
          checked: false
        }, {
          id: 2,
          job: '叉车工',
          checked: false
        }]
      },
      {
        name: '安保',
        list: [{
          id: 1,
          job: '保安',
          checked: false
        }],
      }
  ];
}
export default category;
相关推荐
米米商聊7 小时前
同名附件为什么被 Map 覆盖?重复键与一对多索引
前端·javascript
kyriewen9 小时前
我把 10 道面试题答案真跑了一遍:6 道是错的
前端·javascript·面试
考拉讲支付10 小时前
延迟分账 / 核销分账的技术实现方案:服务完成后再分钱,到底怎么设计?
大数据·运维·人工智能·微信小程序·小程序·系统架构
WebInfra10 小时前
Rspack 2.3 发布:联手 SWC 团队带来全新编译器
前端·javascript·github
FRing0311 小时前
JavaScript入门到精通三十一(原型继承、原型链)
开发语言·前端·javascript
程序员大阳12 小时前
副队长JavaScript教程(52)-DOM操作元素的内容
javascript·dom·innertext·innerhtml·value·内容操作
裕波13 小时前
苏千|从 cnpm 到 Vite+:AI 时代的开发者体验演进
javascript
console.log('npc')13 小时前
周期任务功能完整实现:CRON 编辑器 + 模板变量 + 执行历史
javascript·vue.js·编辑器
程序员大阳13 小时前
副队长JavaScript教程(58)-基于DOM的网页留言板开发
javascript·实例·dom·案例·留言板
咚咚咚小柒13 小时前
【前端】LangChain.js学习
前端·javascript·人工智能·typescript·langchain·vue·ai编程