Javascript 如何将包含对象字符串的数组转换为常规密钥对象对?
我正在尝试将uri转换为对象值,作为成功级别,我使用冒号转换并拆分为数组值。但我无法将它们转换为常规对象。谁能给我一个好方法。我正在起诉他 这是我的密码: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
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:对不起,我把结果
和项目
的顺序搞错了。编辑答案以反映正确的顺序。