You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将变量值存入数组后修改变量且数组保留原值?

解决方案

一、内存中临时保存(页面刷新后重置)

你之前的问题是每次都重新初始化数组,导致旧数据被覆盖。只需把数组的初始化放在生成随机数的代码外部,再用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 03:07:39