0

完全に解析されたデータを含むオンラインページにdivがあります。たとえば、「info」という名前のdivには、次のものが含まれます。

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

JavaScript / Jqueryで最も最適な(パフォーマンス面での)方法は次のとおりです。

  1. ページのdivを読む(コンテンツをスクレイプする)
  2. '、'でdivを解析します
  3. 2D配列に格納します

どんな助けでもいただければ幸いです!

4

3 に答える 3

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);
});
于 2013-02-16T19:51:39.557 に答える
1

私がそれを行う方法は次のとおりです。

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

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

iPhoneでやってるので誤字脱字あったらごめんなさい。データが改行に完全に分割されていない場合は、すべてのデータをコンマで分割し、3 項目ごとにチェックする内部カウンターを維持しながらループします。これは、新しいデータ配列を解析したことを示します。

于 2013-02-16T19:46:44.590 に答える
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: after タグに他の改行がないことを確認してください。そうしないと、このコードが機能しません。

于 2013-02-16T20:15:38.583 に答える