我需要我的代码在逗号之前获取值,但它只获取其中一个值——Javascript
我对Javascript语言相当陌生 我正在尝试做一个点击游戏(没那么难)。游戏正在运行,但我正在尝试为游戏制定一个保存方法 我决定让游戏自己制作代码,用户可以在下次进入游戏时复制并粘贴,而不是使用cookies 所以save方法是有效的,但是当我试图让游戏加载代码时,它并没有完全正确 它不是在逗号之前抓取值,而是抓取我用作检查器的单词的字母。 有什么办法可以解决这个问题吗? 这是我的密码:我需要我的代码在逗号之前获取值,但它只获取其中一个值——Javascript,javascript,string,Javascript,String,我对Javascript语言相当陌生 我正在尝试做一个点击游戏(没那么难)。游戏正在运行,但我正在尝试为游戏制定一个保存方法 我决定让游戏自己制作代码,用户可以在下次进入游戏时复制并粘贴,而不是使用cookies 所以save方法是有效的,但是当我试图让游戏加载代码时,它并没有完全正确 它不是在逗号之前抓取值,而是抓取我用作检查器的单词的字母。 有什么办法可以解决这个问题吗? 这是我的密码: var=0; var-miner=0; var加载程序=0; var=0; var-tnt=0; va
var=0;
var-miner=0;
var加载程序=0;
var=0;
var-tnt=0;
var-minecart=0;
var推土机=0;
var=0;
var manager=0;
var-cost1=10;
风险价值2=200;
var-cost3=350;
风险价值4=500;
风险价值5=600;
风险价值6=800;
风险价值7=2500;
风险价值8=6000;
风险价值9=100000;
var现金=0;
var现金利率=1000;
//--拯救游戏--
函数save(){
var save=“”;
var数据=现金+“,“+现金利率+”,“+电铲+”,“+矿工+”,“+装载机+”,“+钻孔机+”,“+tnt+”,“+矿车+”,“+推土机+”,“+卡车+”,“+经理+”,“+成本1+”,“+成本2+”,“+成本3+”,“+成本4+,“+成本5+”,“+成本6+,“+成本7+”,“+成本8+,“+成本9;
保存+=“CoalMinerGame=“+数据;
var finalSave=encode(save);//编码/解码使用Base64代码完成
提示(“把这个放在你会记得的地方!”,最后保存);
}
函数加载(){
var code=prompt(“粘贴下面的保存代码!”,“”);
如果(代码!=“”){
var负载=解码(代码);
if(load.includes(“CoalMinerGame=)){
load.split(“CoalMinerGame=”);
//加载[0]=空白
现金=负载[1];
现金利率=负载[2];
电铲=负载[3];
矿工=负载[4];
装载机=装载量[5];
钻孔=荷载[6];
tnt=荷载[7];
矿车=装载[8];
推土机=负载[9];
卡车=装载量[10];
管理器=加载[11];
成本1=荷载[12];
成本2=荷载[13];
成本3=荷载[14];
成本4=荷载[15];
成本5=荷载[16];
成本6=荷载[17];
成本7=荷载[18];
成本8=荷载[19];
成本9=荷载[20];
updateWorkers();
警报(“保存已成功加载!”);
}否则{
警报(“不是有效的保存代码!”);
}
}否则{
警报(“必须输入保存代码才能恢复游戏!”);
}
}
我看到两个错误:
- 函数的
不会修改load.split()
,而是返回一个数组,该数组应该存储在另一个变量中load
- 您还应该再次拆分逗号上的结果字符串,以分隔不同的值
希望有帮助 哦,老兄,这代码让我很痛苦:) 对整个对象使用一些本机函数,这样就不必手动对其进行序列化和反序列化,怎么样 此代码
const myObject = {
some: 'fields',
even: {
nested: 'fields',
},
};
const stringified = JSON.stringify(myObject);
console.log(stringified);
const unstringified = JSON.parse(stringified);
console.log(unstringified);
有这个输出吗
{"some":"fields","even":{"nested":"fields"}}
{ some: 'fields', even: { nested: 'fields' } }
您还可以使用base64步骤进行编码和解码
stringify接受JS对象并创建包含JSON的纯字符串
然后,当您想要获取JSON并从中创建对象时,您可以只使用JSON.Parse,它需要字符串。我赞同使用JSON的观点。我下面的例子可能需要对游戏代码进行一些重构,但会更简洁。要访问变量cash,您只需使用gameData.cash,当前使用的是cash var
var gameData = {
cash: 0,
cashRate:0,
shovel:0,
miner:0,
loaders:0,
drill:0,
tnt:0,
minecart:0,
bulldozer:0,
trucks:0,
manager:0,
cost1:10,
cost2:200,
cost3:350,
cost4:500,
cost5:600,
cost6:800,
cost7:2500,
cost8:6000,
cost9:100000
}
function save(){
var dataToSave = CoalMinerGame: {
cash: cash,
cashRate:cashRate,
shovel:shovel,
miner:miner,
loaders:loaders,
drill:drill,
tnt:tnt,
minecart:minecart,
bulldozer:bulldozer,
trucks:trucks,
manager:manager,
cost1:cost1,
cost2:cost2,
cost3:cost3,
cost4:cost4,
cost5:cost5,
cost6:cost6,
cost7:cost7,
cost8:cost8,
cost9:cost9
}
var finalSave = JSON.Stringify(dataToSave)
finalSave = encode(finalSave)
prompt("Keep this somwhere you'll remember!", finalSave)
}
function load(){
var code = prompt("Paste the save code below!", "")
var load = decode(code)
if (code != ""){
gameData = load;
updateWorkers();
alert("Save Successfully loaded!")
} else {
alert("You must enter a save code to get your game back!")
}
}
提示:当您使用许多变量的名称后带有数字时,您应该立即想到,“哦!我应该为此使用数组!”您是否考虑过json(JavaScript对象表示法)来存储数据?既然可以使用JSON,为什么还要发明自己的解析呢!工作后,您可能希望将代码发布到;如果最终的工作结果与上述类似,那么有很多方法可以改进,这将提高您的JavaScript和HTML技能。解码是您编写的?只需执行
load=load.split(“CoalMinerGame=”)代码>?而不是load.split(“CoalMinerGame=”)代码>