Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/381.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 字符串到数组nodejs_Javascript_Node.js - Fatal编程技术网

Javascript 字符串到数组nodejs

Javascript 字符串到数组nodejs,javascript,node.js,Javascript,Node.js,我格式化字符串(我可以以任何方式格式化字符串) e、 g 然后对其进行加密并通过查询字符串传递 ?qs=djdjdjfjf57577574h33h3h3hh3h3 然后在节点上解密它 id1:234,id2:4566,id3:3000 哪种方法是格式化字符串并将其转换为节点中的数组的最佳方法 arr[id1] = "234"; arr[id2] = "4566"; arr[id3] = "3000"; 我想您应该使用hashmap(对象)而不是数组: v

我格式化字符串(我可以以任何方式格式化字符串)

e、 g

然后对其进行加密并通过查询字符串传递

   ?qs=djdjdjfjf57577574h33h3h3hh3h3
然后在节点上解密它

   id1:234,id2:4566,id3:3000
哪种方法是格式化字符串并将其转换为节点中的数组的最佳方法

    arr[id1] = "234";
    arr[id2] = "4566";
    arr[id3] = "3000";

我想您应该使用hashmap(对象)而不是数组:
var obj={}
然后尝试:

"id1:234,id2:4566,id3:3000".split(",").forEach(function(e){
    var record = e.split(":");
    obj[record[0]] = record[1];
})
这给了你:
{id1:“234”,id2:“4566”,id3:“3000”}

首先,作为对象模型,您拥有的更多是一个类似散列的对象,或者只是一个带有键和值的JavaScript对象,因此最好的方法就是使用

因此,如果您可以按照您所说的那样执行:我可以以任何方式格式化字符串,您最好首先更改格式,使其具有如下内容:

'{"id1":234,"id2":4566,"id3":3000}'
而不是:

id1:234,id2:4566,id3:3000
您可以使用JavaScript对象在客户端JavaScript上使用
JSON.stringify
来实现,而无需处理字符串格式:

//on the client side
var myObj = {};
myObj.id1 = 234;
myObj.id2 = 4566;
myObj.id3 = 3000;
var objStr = JSON.stringify(myObj);
假设您使用名为
encrypt
的函数加密字符串:

var encryptedStr = encrypt(objStr);
//so now you should use encodeURI to be able to put it in the queryString
var queryStringParam = encodeURI(encryptedStr);
//the server-side code
var decryptedStr = decrypt(decodeURI(yourQueryString));
var obj = JSON.parse(decryptedStr);
现在将
queryStringParam
放入queryString中

然后在node.js端,您所要做的就是将其作为JSON对象进行解析。您可能考虑过的另一个要点是使用
decodeURI
。最后一步,假设您正在使用名为
decrypt
的e函数:

var encryptedStr = encrypt(objStr);
//so now you should use encodeURI to be able to put it in the queryString
var queryStringParam = encodeURI(encryptedStr);
//the server-side code
var decryptedStr = decrypt(decodeURI(yourQueryString));
var obj = JSON.parse(decryptedStr);

现在,obj正是您想要的。

我可以问一下这个解决方案的上下文吗?你在用它做什么?将参数从php站点传递到一个节点Soket在你的例子中应该是什么
id1
id2
id3
?它们不是变量,而是字符串文字,对吗?是的,因为为了安全起见,我对字符串进行加密和解密,所以我不想传递值​​这是可以理解的,这个例子非常接近JSON,对我来说,显然是实现你想要的下一步。没有
每个
函数。您可以使用
forEach
,但这是不受支持的,因为它将在NodeJS端,我假设有
“每个”
,因为在Chrome上有:)没有
每个功能tell@Amberlamps编辑,谢谢(似乎我运行控制台的站点在数组中有这个方法)。谢谢它的工作!但是如果我把客户端部分放在加密字符串上是无用的;)