4

次のような文字列があります。

<tr><td>Date</td><td>Value</td></tr>
<tr><td>2013-01-01</td><td>231.198</td></tr>
<tr><td>2013-02-01</td><td>232.770</td></tr>
<tr><td>2013-03-01</td><td>232.340</td></tr>
<tr><td>2013-04-01</td><td>231.485</td></tr>
<tr><td>2013-05-01</td><td>231.831</td></tr>
<tr><td>2013-06-01</td><td>232.944</td></tr>
<tr><td>2013-07-01</td><td>233.318</td></tr>

...もちろん、これは本質的にテーブルです。

この文字列を 2 つの配列を含む配列に動的に変換したいと思います。日付の 1 つ、値の 1 つ。

[編集日] 日付と値を持つオブジェクトの配列も機能します。

4

5 に答える 5

3

あなたはすでに回答を受け入れていますが、私は単純な JavaScript ソリューションを投稿すると思いました (ただし、Barmar が jQuery を使用する意思があり、使用できると指摘する前に、私はそれに取り組むのに時間を費やしたことが主な理由ですが):

function cellContents(htmlStr, what) {
    var _table = document.createElement('table');
    _table.innerHTML = htmlStr;
    var rows = _table.getElementsByTagName('tr'),
        text = 'textContent' in document ? 'textContent' : 'innerText',
        cells,
        matches = {};
    for (var w = 0, wL = what.length; w < wL; w++) {
        matches[what[w]] = [];
        for (var r = 1, rL = rows.length; r < rL; r++) {
            cells = rows[r].getElementsByTagName('td');
            matches[what[w]].push(cells[w][text]);
        }
    }
    return matches;
}

var str = "<tr><td>Date</td><td>Value</td></tr><tr><td>2013-01-01</td><td>231.198</td></tr><tr><td>2013-02-01</td><td>232.770</td></tr><tr><td>2013-03-01</td><td>232.340</td></tr><tr><td>2013-04-01</td><td>231.485</td></tr><tr><td>2013-05-01</td><td>231.831</td></tr><tr><td>2013-06-01</td><td>232.944</td></tr><tr><td>2013-07-01</td><td>233.318</td></tr>";

console.log(cellContents(str, ['dates', 'values']));

JS フィドルのデモ

于 2013-09-13T22:05:01.917 に答える
1

純粋な JavaScript ソリューションの場合、次のようなことを試すことができます (str が文字列を保持していると仮定します)。

var arrStr = str.replace(/<td>/g, "").replace(/<tr>/g, "").split("</td></tr>");
var arrObj = [];
var arrData

for (var i = 1; i < arrStr.length - 1; i++) {
    arrData = arrStr[i].split("</td>");
    arrObj.push({ Date: arrData[0], Value: arrData[1] })
}

これは強制的な文字列の置換/分割ですが、最後arrObjにはオブジェクトの配列があります。

于 2013-09-13T22:06:09.487 に答える
0

有効な html テーブル構造である場合は、それをテーブル タグで囲み、jquery を使用して解析します。次に、jquery のセレクターを使用して列を見つけます。

たとえば、このようなもの(疑似コード、試したことがない)

table = $(yourTableString);
dates  =  table.find("tr td:nth-child(1)");
values =  table.find("tr td:nth-child(2)");
于 2013-09-13T21:49:12.853 に答える