如何将变量值存入数组后修改变量且数组保留原值?
解决方案
一、内存中临时保存(页面刷新后重置)
你之前的问题是每次都重新初始化数组,导致旧数据被覆盖。只需把数组的初始化放在生成随机数的代码外部,再用push()方法新增元素即可:
// 初始化空数组,仅执行一次 let array = []; // 生成新随机数 let number = Math.floor(Math.random() * 89173458943); // 将新数字添加到数组末尾,保留已有数据 array.push(number); console.log(array); // 每次执行都会新增一个数字,数组保留所有历史值
原理:数字是基本数据类型,数组中存储的是number的数值副本,后续修改number的新值不会影响数组里已有的元素;push()方法专门用于在数组末尾追加新元素,不会改动已有内容。
二、持久化保存(页面刷新后仍保留数据)
针对你用localStorage失败的问题,核心是没读取已存储的旧数据就直接覆盖。正确的做法是先读取历史数据,合并新值后再存回去:
// 从localStorage读取已有数组,无数据则初始化为空数组 let array = JSON.parse(localStorage.getItem('savedNumbers')) || []; // 生成新随机数 let number = Math.floor(Math.random() * 89173458943); // 添加新数字到数组 array.push(number); // 将更新后的数组转成JSON字符串存回localStorage(localStorage仅支持字符串存储) localStorage.setItem('savedNumbers', JSON.stringify(array)); console.log(array); // 包含所有历史生成的数字,页面刷新后不会丢失
内容的提问来源于stack exchange,提问作者Viper_shot
相关产品推荐
相关产品推荐

