Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/428.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我需要我的代码在逗号之前获取值,但它只获取其中一个值——Javascript_Javascript_String - Fatal编程技术网

我需要我的代码在逗号之前获取值,但它只获取其中一个值——Javascript

我需要我的代码在逗号之前获取值,但它只获取其中一个值——Javascript,javascript,string,Javascript,String,我对Javascript语言相当陌生 我正在尝试做一个点击游戏(没那么难)。游戏正在运行,但我正在尝试为游戏制定一个保存方法 我决定让游戏自己制作代码,用户可以在下次进入游戏时复制并粘贴,而不是使用cookies 所以save方法是有效的,但是当我试图让游戏加载代码时,它并没有完全正确 它不是在逗号之前抓取值,而是抓取我用作检查器的单词的字母。 有什么办法可以解决这个问题吗? 这是我的密码: var=0; var-miner=0; var加载程序=0; var=0; var-tnt=0; va

我对Javascript语言相当陌生

我正在尝试做一个点击游戏(没那么难)。游戏正在运行,但我正在尝试为游戏制定一个保存方法

我决定让游戏自己制作代码,用户可以在下次进入游戏时复制并粘贴,而不是使用cookies

所以save方法是有效的,但是当我试图让游戏加载代码时,它并没有完全正确

它不是在逗号之前抓取值,而是抓取我用作检查器的单词的字母。

有什么办法可以解决这个问题吗?

这是我的密码:

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=”)