3

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

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/

4

3 回答 3

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/

于 2011-11-24T11:09:41.527 回答
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/

于 2011-11-24T11:08:58.010 回答
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);
于 2011-11-24T11:12:13.953 回答