2017-01-06 26 views
0

次のコードがあります。ネストした配列を作成して、マルチレベルの順序付きリストを生成する必要があります。どのように私はこの使用してJavaScriptや任意のより良い方法を達成することができますJavaScript:文字列からネストされた配列を作成する方法

['Lorem ipsum dolor sit amet, consectetur:', 
    ['Perferendis iure doloremque iusto adipisci facilis.', 
     ['Asperiores impedit officiis.', 
      ['Dignissimos maiores facere consequuntur quod.']]]]; 

[ 'Lorem ipsum dolor sit amet, consectetur:', 
    [ 'Perferendis iure doloremque iusto adipisci facilis.', 
    [ 'Asperiores impedit officiis.', 
      'Dignissimos maiores facere consequuntur quod.']]] 

しかし、望ましい結果の配列:私は次の配列を生成することができます私の現在のコードで

var htmlContent2 = '<div id="header"><p class="headpara">Header content</p><p class="one">Lorem ipsum dolor sit amet, consectetur:</p><p class="two">Perferendis iure doloremque iusto adipisci facilis.</p><p class="two">Asperiores impedit officiis cumque molestias at rerum consequuntur!</p><p class="one">More dummy text.</p> <p class="two">Additional dummy text: </p> <p class="three">Asperiores impedit officiis.</p> <p class="three">Lolestiae asperiores ad repellat est obcaecati.</p> <p class="two">Lorem ipsum dolor sit amet.</p> <p class="notelem">Dignissimos maiores facere consequuntur quod.</p> <p class="one">Ea excepturi aperiam.</p></div>'; 

var $ = cheerio.load(htmlContent2); 
var allList = []; 
var manipulatedContent = $('#header').each(function (i, elem) { 
    var level1 = [], 
     level2 = [], 
     level3 = [], 
     level4 = [],   
     item1 = $('.one').html(), 
     item2 = $('.two').html(), 
     item3 = $('.three').html(), 
     item4 = $('.notelem').html(); 
    level1[i] = item1; 
    level2[i] = item2; 
    level3[i] = item3; 
    level4[i] = item4; 
    allList.push(item1, [item2, [item3, item4]]); 

}); 
console.dir(allList); 

cheerio.jsで?

私の目的は、サンプルコンテンツ(htmlContent2)に示されているように、フォーマットが不適切なHTMLからネストされた順序付きリストを作成することです。

あなたのお手伝いをさせていただきます。 @クリスGは

+0

は変更 'allList.push(ITEM1、ある[ITEM2、[項目3、ITEM4]] ); 'to' allList.push(item1、[item2、[item3、[item4]])); ' –

+0

上記のコードを使用すると、結果として得られるコンテンツは私の必要とするものではありません。私は次のようなことをしています:['Lorem ipsum dolor sit amet、consectetur:'、 ['Perperndis iure doloremque iusto adipisci facilis'、 ['Asperiores impit officiis。'] [オブジェクト]]]] 私はcheerioを使用しています。 jsを使用して入れ子配列を生成します。 – EBamba

+0

私のためにうまく動作します。それが働くことを証明するチェスターの答えを見てください。 –

答えて

0

をコメントとして:

//var htmlContent2 = ''; 
 
//var $ = cheerio.load(htmlContent2); 
 
var allList = []; 
 
var manipulatedContent = $('#header').each(function (i, elem) { 
 
    var level1 = [], 
 
     level2 = [], 
 
     level3 = [], 
 
     level4 = [],   
 
     item1 = $('.one').html(), 
 
     item2 = $('.two').html(), 
 
     item3 = $('.three').html(), 
 
     item4 = $('.notelem').html(); 
 
    level1[i] = item1; 
 
    level2[i] = item2; 
 
    level3[i] = item3; 
 
    level4[i] = item4; 
 
    allList.push(item1, [item2, [item3, [item4]]]); 
 

 
}); 
 
console.dir(allList);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div id="header"><p class="headpara">Header content</p><p class="one">Lorem ipsum dolor sit amet, consectetur:</p><p class="two">Perferendis iure doloremque iusto adipisci facilis.</p><p class="two">Asperiores impedit officiis cumque molestias at rerum consequuntur!</p><p class="one">More dummy text.</p> <p class="two">Additional dummy text: </p> <p class="three">Asperiores impedit officiis.</p> <p class="three">Lolestiae asperiores ad repellat est obcaecati.</p> <p class="two">Lorem ipsum dolor sit amet.</p> <p class="notelem">Dignissimos maiores facere consequuntur quod.</p> <p class="one">Ea excepturi aperiam.</p></div>

それは一種のあなたがする必要があるすべてのように見える
+0

ハローチェスター、生成された配列は有効ではないようです。 – EBamba

+0

@Manou、あなたはどういう意味ですか?あなたの質問にあなたが望む結果と同じです。 – chester

+0

私はもう一度チェックして、実際にうまくいった。ご協力いただきありがとうございます。 – EBamba

関連する問題