私はjsfiddleを持っています。これは基本的に配列データを受け取り、それをHTMLに追加します。私はこれを達成するためにループfor
を使用しています。しかし、もし私がArray.prototype.map()
の機能を使ってこれをやりたいのであれば私は好奇心が強いのですが、どうすればいいですか?私はアンダースコアやロダッシュのようなサードパーティのライブラリを使用したくありません。配列データとHTMLの前に付加
答えて
更新ソリューション:
OPは、彼はその後、それがウィキペディアで(そのサービスのおそらく1)が設けられているようdata
入力、
を制御できませんと言っているので、私は、データが構造化されていて正しいと仮定しています。つまり、ネストされた配列のうちの1つが他の配列よりも長くても短い場合も決してありません。
はい、間違いなくmap
APIを使用して、Wikipediaの入力に意味を与えてから、forEach
を実行してHTML文字列を作成することができます。
例:
var data = [["title 1","title 2","title 3"],
["description 1","description 2","description 3"],
["link 1","link 2","link 3"]];
var titles = data[0];
var descriptions = data[1];
var links = data[2];
var output = titles.map((title, index) => {
return {
"title": title,
"description": descriptions[index],
"link": links[index]
}
});
output.forEach((item) => {
$("#output").append(
"<div><h1>"+ item.title +"</h1><p>"+ item.description
+"</p><a>"+ item.link +"</a></div>"
);
})
参照JFiddle:https://jsfiddle.net/SamuelToh/8tpb1jsg/
前のソリューション:すべての
まず - 私が選択したデータが構造化された方法は、エラーを起こしやすいと思いますtitle1、description1、およびtitle1の仕方には明確な関係がないため、 dリンク1は集合を形成する。
アレイの1つが同期しなくなるとどうなりますか?つまり、配列の1つが残りの配列よりも短くなったり長くなったりするため、実行時にコードがindex out of bond
で消滅します。
私は理想的にはあなたのデータを構造化したいと思います。
var suggested_data = {
title1: {
description: "description 1",
link: "link1"
},
title2: {
description: "description 1",
link: "link1"
},
title3: {
description: "description 1",
link: "link1"
}
}
このようにして、タイトルXにはyyyの値を持つdescriptionプロパティとvalue zzzというリンクプロパティがあります。
これらのプロパティのいずれかが見つからない場合でも、ほとんどの場合、undefined
の値が得られます。
そして、これはあなたが構造をループ
for (var title in suggested_data) {
var item = suggested_data[title];
$("#output").append(
"<div><h1>" + title+"</h1><p>" + item.description
+"</p><a>" + item.link + "</a></div>"
);
}
最終的にはそれがmap
を使用するかではない話ではありませんでしょうかですが、私はそれはあなたが選択したデータ構造のよりだと思います。
私はウィキペディアのビューアを構築しようとしていましたが、jsonデータはこのようにフォーマットされています。これを確認してください... https://en.wikipedia.org/w/api.php?action=opensearch&search="cats"&format= json&callback =? " –
@anoopchandran更新していただきありがとうございます。私はあなたのことを知らなかったので、入力を制御しています。今、私は解決策を' map'と 'forEach'に更新しました。フィドルでそれは動作します。 –
.map()
を使用して新しいHTML要素を配列に集め、その結果を1回の操作で出力要素に追加することができます。
文字列を連結する代わりに、.text()
メソッドを使用して、大なり記号またはアンパサンドが結果のHTMLを破棄しないように注意してください。
var data = [["title 1","title 2","title 3"],
["description 1","description 2","description 3"],
["link 1","link 2","link 3"]];
$("#output").append(data[0].map((title,i) =>
$("<div>").append(
$("<h1>").text(title),
$("<p>").text(data[1][i]),
$("<a>").text(data[2][i])
)
));
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="output"></div>
NB:ここ
は、それは次のようになりますどのようにあなたが実際にハイパーリンクとして3番目の値を使用したい場合は、その後、使用.attr()
:
$("<a>").attr('href', data[2][i]).text('click here')
または、最初の(タイトル)値をハイパーリンクすることもできます:
$("<div>").append(
$("<h1>").append(
$("<a>").attr('href', data[2][i]).text(title)
),
$("<p>").text(data[1][i])
)
- 1. Jquery - 配列内の各行の前にhtmlを追加する
- 2. Htmlテーブルの行データをJSON配列に追加するオブジェクト
- 3. PHPマップ配列データのHTMLテーブルに一部のHTMLテーブルの列
- 4. 配列にデータをプッシュすると、以前のデータ
- 5. ATTR()でデータ属性の配列に名前と値を追加します。
- 6. 角型2のモデルとデータに型式付きの配列を追加
- 7. は、配列の値にキー配列を付加
- 8. NumPy配列のフィールドの名前付け
- 9. C++の名前付き配列
- 10. PHP - 配列の繰り返しとHTMLテーブルの配列データの入れ替え
- 11. Spring Web MVC Json - オブジェクト配列(名前付き配列)のjacksonキー/名前
- 12. htmlの前にhtmlを追加
- 13. Matlabに追加された日付/データがない日付/データの新しい配列を作成
- 14. 配列にデータを追加するJava
- 15. 名前付きPHPアクセス配列値
- 16. 配列から新しい配列にデータを追加する
- 17. 文字列の配列にファイルの名前を追加
- 18. htmlに追加する前にajaxデータを編集する
- 19. 名前付きdtype配列:[0] ['name']と['name'] [0]の違いは?
- 20. プレフィックスとして配列に名前を付けることによる加算変数
- 21. 次と前の配列インデックス
- 22. Python dataframe前の日付のデータを選択する列を追加します
- 23. 前に付加レベルパンダにマルチインデックス
- 24. JqueryはDOMに追加する前にhtmlにデータを追加します
- 25. HTML要素の配列をループして配列に追加する
- 26. 配列内のオブジェクトに動的に名前を付ける
- 27. 配列データに基づいてブロック日付ピッカー日付
- 28. 配列とPHPの日付
- 29. ActiveRecordポリ付加配列対連結配列
- 30. テーブルセルに配列データを追加するとアプリケーションがクラッシュする
機能プログラミング(通常)は、DOM操作のような副作用を回避します。だから、 'map'を使うのは本当に素晴らしい選択ではないと私は言います。 – jmargolisvt