Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/39.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_Node.js - Fatal编程技术网

Javascript 将字符串转换为对象

Javascript 将字符串转换为对象,javascript,node.js,Javascript,Node.js,好吧,我知道了 var str = {}; string.split(' ').forEach(function(val, idx) {str[++idx] = val;}); 但若字符串是“Hello world‘how r u’”,它将返回 ["1":"Hello","2":"world","3":"how","4":"r","5":"u"] 我要它回来 ["1":"Hello","2":"world","3":"how r u"] 所以,介于“”和“”之间的是1项,我如何使它这样做?

好吧,我知道了

var str = {}; string.split(' ').forEach(function(val, idx) {str[++idx] = val;});
但若字符串是“Hello world‘how r u’”,它将返回

["1":"Hello","2":"world","3":"how","4":"r","5":"u"]
我要它回来

["1":"Hello","2":"world","3":"how r u"]
所以,介于“”和“”之间的是1项,我如何使它这样做?
顺便说一句,我使用的是node.js,而不是node.js专家,所以我不知道在split函数中使用正则表达式是否有一个好的解决方案,但是一个解决方案可能是编写一个函数,首先根据"或"性格"。这将产生一个字符串数组,您可以将其进一步拆分为更小的块。

感谢louis on swiftirc#javascript

var out = {}; 'this is "a test" with a "random string of words" 34iuv     38vy 3b8u nuhvbe7yvb 73rvy dsuh bue "f34fdvedfg wr edf Fw efwef" efg3f'.match(/\w+|"(.[^"]+)"/g).forEach(function (str, idx) { out[++idx] = str.replace(/^"|"$/g,''); });
console.log(out);

>> {"1":"this","2":"is","3":"a test","4":"with","5":"a","6":"random string of words","7":"34iuv","8":"38vy","9":"3b8u","10":"nuhvbe7yvb","11":"73rvy","12":"dsuh","13":"bue","14":"f34fdvedfg wr edf Fw efwef","15":"efg3f"}

第二个返回应该是[“1”:“Hello”,“2”:“world”,“3”:“how”,“4”:“r”,“5”:“u'”),您可以按空格分割,在处理方法中,忽略以(字符#1)开头的分割,直到找到结束“,这应该适用于简单的对象,但不适用于嵌套的“您想要的结果实际上是这样的Javascript对象:
{“1”:“Hello”,“2”:“world”,“3”:“how r u”}
还是希望结果是数组?或者,只要我可以单独访问每个世界或字符串。