微信小程序:怎么在一个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;
相关推荐
张元清27 分钟前
React useDebounce Hook:给状态和回调做防抖(2026)
javascript·react.js
Cobyte1 小时前
21.Vue Vapor 组件的实现原理
前端·javascript·vue.js
铁皮饭盒2 小时前
Rust版Bun1.4之前, 盘点Bun1.3新特性
前端·javascript·后端
晓得迷路了2 小时前
栗子前端技术周刊第 135 期 - Vite 8.1、Rspack 2.1、Babel 8.0...
前端·javascript·vite
To_OC11 小时前
LC 207 课程表:刚学图论那会儿,我连这是拓扑排序都没看出来
javascript·算法·leetcode
To_OC11 小时前
LC 208 实现 Trie 前缀树:曾被名字劝退,写完发现是送分题
javascript·算法·leetcode
天渺工作室11 小时前
实现一个adblock/adblock plus等浏览器广告拦截器检测插件
前端·javascript
kyriewen19 小时前
2026 年了,还在用 Node.js?Bun 迁移实战:20 分钟搞定,附踩坑记录
前端·javascript·node.js
minglie1 天前
一个置换问题
javascript
默_笙1 天前
🌀 别再手动写 Prompt 了!我让 AI 自己循环改到满意为止
javascript