jquery map将虚线属性列表转换为对象

时间:2011-11-24 11:06:05

标签: javascript jquery array-map

我想转换这样的东西(例如在课堂上使用):

var classname = "username_admin color_red strength_good"

成:

myvalues = {
    username: 'admin',
    color: 'red',
    strength: 'good'
}

目前这是我最接近的目标:

myvalues = $.map(classname.split(' '),function(el, i) {
    var tmp = el.split('_');
    var res = {};
    res[tmp[0]] = tmp[1];
    return res;
});

如何继续? http://jsfiddle.net/4EvWw/

3 个答案:

答案 0 :(得分:4)

我会像这样使用each()因为map()返回文档中所述的数组元素:

  

jQuery.map(array,callback(elementOfArray,indexInArray))
  返回:数组
   描述:将数组或对象中的所有项目翻译为新项目   项目数组。

var classname = "username_admin color_red strength_good";

var res = {};
$.each(classname.split(' '),function(i, el) {
    var tmp = el.split('_');

    res[tmp[0]] = tmp[1];
});


console.log(res);

在这里摆弄http://jsfiddle.net/4EvWw/1/

答案 1 :(得分:3)

你想使用.each而不是.map,并在函数之外定义res:

var res = {};
$.each(classname.split(' '),function(i, el) {
    var tmp = el.split('_');    
    res[tmp[0]] = tmp[1];
});

console.log(res);

http://jsfiddle.net/infernalbadger/4EvWw/3/

答案 2 :(得分:0)

将您的代码更新为以下http://jsfiddle.net/manuel/4EvWw/2/

var classname = "username_admin color_red strength_good";

var res = {};
$.map(classname.split(' '),function(el, i) {
    var tmp = el.split('_');
    res[tmp[0]] = tmp[1];
});

console.log(res);