Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/silverlight/4.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 - Fatal编程技术网

在javascript中重新构造字符串

在javascript中重新构造字符串,javascript,Javascript,我有一个字符串,需要使用JavaScript重新构造它 Label=11121212&TopicArn=test&AWSAccountId.member.1=yyyyyyyy&ActionName.member.1=createTopic&Action=AddPermission&Version=2010-03-31&AWSAccessKeyId=XXXXXXXXX&SignatureVersion=2&SignatureMethod=HmacSHA1&Timestamp=2012-05-02T

我有一个字符串,需要使用JavaScript重新构造它

Label=11121212&TopicArn=test&AWSAccountId.member.1=yyyyyyyy&ActionName.member.1=createTopic&Action=AddPermission&Version=2010-03-31&AWSAccessKeyId=XXXXXXXXX&SignatureVersion=2&SignatureMethod=HmacSHA1&Timestamp=2012-05-02T16%3A06%3A09.000Z&Signature=C3uIh%2Bz%2Fik

对于本例,
AWSAccessKeyId
应该是字符串的第一部分,
label
应该是最后第二部分。还有其他类似的例子

预期产量--AWSAccessKeyId=XXXXXXXXX&AWSAccountId.member.1=yyyyyyyyyyyy&Action=AddPermission&ActionName.member.1=Publish&Label=ios-sns-permission-Label&Signature=ios-Label&Signature=deanl0ibp5c7xyl4qxdpfppadw0meoux9cakyuix1wkk%3D&SignatureMethod=HmacSHA256&signaturerevision=2&Timestamp=2012-05-0251%3A23.965Z&TopicArn=3Aaws%3Asns%3Aus-east-1%3a33504696%3aswoooo-133591982&Version=2010-03-31

创建此错误字符串的代码

exports.generatePayload = function(params, accessKeyId, secretKey, endpoint) {
    var host = endpoint.replace(/.*:\/\//, "");
    var payload = null;

    var signer = new AWSV2Signer(accessKeyId, secretKey);
    params = signer.sign(params, new Date(), {
        "verb" : "POST",
        "host" : host,
        "uriPath" : "/"
    });

    var encodedParams = [];
    for(var key in params) {
        if(params[key] !== null) {
            encodedParams.push(encodeURIComponent(key) + "=" + encodeURIComponent(params[key]));
        } else {
            encodedParams.push(encodeURIComponent(key));
        }
    }
    payload = encodedParams.join("&");
    return payload;
}
我试着把它放在一个数组中并重新构造它,但它对我不起作用


请建议如何使用JavaScript轻松实现这一点

当您说您尝试将其放入数组并重新构造时,您的意思是什么?你能帮我寄密码吗?这应该行得通,所以我有一个和数组,它包含字符串的所有元素,我做了一个连接,将它作为一个字符串,如下所示--d=[];d、 推送(“标签=11111”);返回e=d。join(&)显示预期的输出。是否删除字符串的其余部分?请包含完整代码,而不是部分代码。我已添加了预期的输出,请忽略它们可能不同的值,关键在于有更有效的方法来执行此操作,但这会起作用。
exports.generatePayload = function(params, accessKeyId, secretKey, endpoint) {
    var host = endpoint.replace(/.*:\/\//, "");
    var payload = null;

    var signer = new AWSV2Signer(accessKeyId, secretKey);
    params = signer.sign(params, new Date(), {
        "verb" : "POST",
        "host" : host,
        "uriPath" : "/"
    });

    var encodedParams = [];
    if(params["AWSAccessKeyId"] != null)
    {
        encodedParams.push(encodeURIComponent("AWSAccessKeyId") + "=" + encodeURIComponent(params["AWSAccessKeyId"]));

    }
    if(params["AWSAccountId.member.1"] != null)
    {
        encodedParams.push(encodeURIComponent("AWSAccountId.member.1") + "=" + encodeURIComponent(params["AWSAccountId.member.1"]));

    }
    //other_ifs_for_param_keys_here
    payload = encodedParams.join("&");
    return payload;