将Page div解析为数组JavaScript

时间:2013-02-16 19:34:13

标签: javascript jquery

我在一个包含完美解析数据的在线页面中有一个div。例如,名为“info”的div将包含:

region,sales,cost
America,12,5
Europe,32,6

JavaScript / Jquery中最优化(性能明智)的方式是什么:

  1. 阅读页面中的div(抓内容)
  2. 用','
  3. 解析div
  4. 将其存储到2d数组
  5. 任何帮助将不胜感激!

3 个答案:

答案 0 :(得分:1)

我将如何做到:

var data = []
   , text = /*select inner HTML of div*/

text.split('\n')
    .forEach(function (line) { 
      data.push(line.split(','))
    })

我是用iPhone做的,如果有一些拼写错误,请原谅我。 如果你的数据没有完全分解为换行符,我只会用逗号分割你的所有数据,然后通过它循环,同时保持一个内部计数器,每3个项目都会勾选,这表明你已经解析了一个新的数据数组。 / p>

答案 1 :(得分:1)

//get string using ajax, JSONP, or whatever means you have
var str = "region,sales,cost\nAmerica,12,5\nEurope,32,6";

var lines = str.split("\n");
//first line is names of keys
var names = lines.shift().split(',');

var countries = [];

lines.forEach(function (line) {
    var obj = {};
    line.split(',').forEach(function (piece, idx) {
        //we know data is well-formed.  Name for each piece will exist
        obj[names[idx]] = piece;
    });
    countries.push(obj);
});

答案 2 :(得分:0)

尝试:

var divContent = $('div').html(); // replace 'div' for correct selector
var result = new Array();

var splitContent = divContent.split('\n'); // Split the content with new line caracter
// Get the index for initial lines
var indexes = splitContent[0].split(',');
// the initial value 1 is for ignore first line
for (var i = 1; i < splitContent.length; i++) { 
    result[i-1] = new Array();
    var items = splitContent[i].split(',');
    for (var j = 0; j < items.length; j++)  {
        result[i-1][indexes[j]] = items[j];
    }
}

我测试过,这很有效。

Ps:请确保标签之后没有其他分隔线或此代码不起作用。