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

Javascript 如何将包含对象字符串的数组转换为常规密钥对象对?

Javascript 如何将包含对象字符串的数组转换为常规密钥对象对?,javascript,jquery,arrays,object,underscore.js,Javascript,Jquery,Arrays,Object,Underscore.js,我正在尝试将uri转换为对象值,作为成功级别,我使用冒号转换并拆分为数组值。但我无法将它们转换为常规对象。谁能给我一个好方法。我正在起诉他 这是我的密码: var ar = ["id:1231", "currency:GBP"]; var outPut = _.map(ar, function(item){ return '{' + item + '}'; }) console.log(outPut); //consoles as ["{id:1231}", "{currency:G

我正在尝试将uri转换为对象值,作为成功级别,我使用冒号转换并拆分为数组值。但我无法将它们转换为常规对象。谁能给我一个好方法。我正在起诉他

这是我的密码:

var ar = ["id:1231", "currency:GBP"];

var outPut = _.map(ar, function(item){
    return '{' + item + '}';
})

console.log(outPut); //consoles as ["{id:1231}", "{currency:GBP}"]
我怎样才能得到这样的结果:

var object = {id:1231, currency:GBP}

下划线是否对此有任何内置方法?

没有任何第三方库:

var output = {} ;
var ar = ["id:1231", "currency:GBP"];
ar.forEach(function (item) {
    var values = item.split(':') ;
    output[values[0]] = values[1] ;
}) ;
输出
控制台日志(输出)


没有任何第三方库:

var output = {} ;
var ar = ["id:1231", "currency:GBP"];
ar.forEach(function (item) {
    var values = item.split(':') ;
    output[values[0]] = values[1] ;
}) ;
输出
控制台日志(输出)


有几种方法可以做到这一点,下划线为它们提供了帮助

一种方法是使用
向初始为空的“result”对象增量添加键/值对:


请注意,除非您必须支持IE8或更早版本,否则您可以这样做。

有几种方法可以实现这一点,下划线为它们提供了帮助

一种方法是使用
向初始为空的“result”对象增量添加键/值对:


请注意,您可以这样做,除非您必须支持IE 8或更早版本。

这里是使用jQuery的另一个版本:

var newObj = {};
$.each( ar, function( i, v ) {
    var kv = v.split( ":" );
    newObj[ kv[0] ] = kv[ 1 ];
 });
 // newObj = {id:"1231", currency:"GBP"}

下面是使用jQuery的另一个版本:

var newObj = {};
$.each( ar, function( i, v ) {
    var kv = v.split( ":" );
    newObj[ kv[0] ] = kv[ 1 ];
 });
 // newObj = {id:"1231", currency:"GBP"}

请不要用…和普通的array@Karl-AndréGagnon为什么会这样?@Sprottenwels:如果在
Array.prototype
上盲目设置任何属性(例如安装某种polyfill),那么您也会对这些属性进行迭代。“你不会想要的。”乔恩,谢谢你。所以如果我能做一个
hasOwnProperty
检查就好了?@karlandréGagnon我不知道,谢谢你的评论。我更新了我的答案@如果你已经在使用
underline.js
你应该使用@Jon answer。请不要在常规中使用for…inarray@Karl-AndréGagnon为什么会这样?@Sprottenwels:如果在
Array.prototype
上盲目设置任何属性(例如安装某种polyfill),那么您也会对这些属性进行迭代。“你不会想要的。”乔恩,谢谢你。所以如果我能做一个
hasOwnProperty
检查就好了?@karlandréGagnon我不知道,谢谢你的评论。我更新了我的答案@sprottens如果您已经在使用
underline.js
,则应该使用@Jon answer.works,但无法获得正确的结果。这是JSFIDLE:您能在这里更新吗。@3gwebtrain:对不起,我把
结果
项目
的顺序搞错了。编辑答案以反映正确的顺序。可以工作,但无法获得正确的结果。这是JSFIDLE:您能在这里更新吗。@3gwebtrain:对不起,我把
结果
项目
的顺序搞错了。编辑答案以反映正确的顺序。