我在包含完美解析数据的在线页面中有一个 div。例如,一个名为“info”的 div 将包含:
region,sales,cost
America,12,5
Europe,32,6
JavaScript/Jquery 中最优化(性能方面)的方式是什么:
- 读取页面中的 div(抓取内容)
- 通过 ',' 解析 div
- 将其存储到二维数组中
任何帮助,将不胜感激!
我在包含完美解析数据的在线页面中有一个 div。例如,一个名为“info”的 div 将包含:
region,sales,cost
America,12,5
Europe,32,6
JavaScript/Jquery 中最优化(性能方面)的方式是什么:
任何帮助,将不胜感激!
我会怎么做是:
var data = []
, text = /*select inner HTML of div*/
text.split('\n')
.forEach(function (line) {
data.push(line.split(','))
})
我是用 iPhone 做的,如果有一些错别字,请见谅。如果您的数据没有完全分成换行符,我会用逗号分割所有数据,然后循环遍历它,同时保持一个内部计数器每 3 个项目打勾,这将表明您已经解析了一个新的数据数组。
//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);
});
尝试:
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:请确保标签后没有其他断行,否则此代码不起作用。