使用jquery将文本转换为对象

时间:2013-08-08 17:11:01

标签: jquery

我有这样的文字:

(1th) a
(2th) b
(3th) c

我可以使用jquery将此文本转换为这样的对象吗?

[{"place":"1th","text":"a"},{},...]

我希望这个用each()函数处理文本。 任何其他使用javascript或jquery进行文本处理的解决方案都很受欢迎。

4 个答案:

答案 0 :(得分:1)

假设你的字符串总是每行只有一个条目:

var regex = /^\((.+?)\)\s*(.+?)$/i;
var result = text.split( "\n" ).map(function( str ) {
    var parsed = regex.exec( str );
    return {
        place: parsed[ 1 ],
        text: parsed[ 2 ]
    };
});

console.log( result );
// => [{ place: "1th", text: "a" }, ...]

作为奖励,此解决方案不需要jQuery:)

答案 1 :(得分:0)

尝试这样的事情,它基本上将字符串转换为数组,然后将其转换为对象。

var str = 'hello my name is slim shady.';
var arr = str.split(' ');
var obj = {};

for (var i = 0; i < arr.length; i++) {
    obj[i] = arr[i];
}

console.log(obj);

答案 2 :(得分:0)

尝试以下

var textArr = ["a","b","c"];
var newObjectArr = [];

$.each(textArr,function(index,obj){

   var single = { "place":(index+1)+"th", "text":obj };
   newObjectArr.push(single);

});

console.log(newObjectArr); // will hold objects

我希望它有所帮助。

答案 3 :(得分:0)

简单的方法,我想:

HTML:

<html>
    <head>
        <script type=text/javascript src=script.js ></script>
    </head>
    <body>
        <list>
            (1th) a
            (2th) b
            (3th) c
        </list>
        <br>
        <output></output>
    </body>
</html>

Javascript(script.js):

window.onload = function() {
    list = document.getElementsByTagName("list")[0].innerHTML.trim().split('\n')
    for (i=0;i<list.length;i++) {
        list[i] = list[i].replace(/[()]/g, '').trim().split(' ')
    }
    document.getElementsByTagName("output")[0].innerHTML = list
}

输出:

list = [[1th, a], [2th, b], [3th, c]]

jsfiddle:http://jsfiddle.net/YTAGe/