Array.prototype.map.callを使用して、一連のノードリストオブジェクトを配列に格納しています。
function getListings() {
return Array.prototype.map.call(document.querySelectorAll('li.g'), function(e) {
return {
rectangle: e.getBoundingClientRect();
}
}
}
ただし、この要素がDOMに表示される順序も保存したいので、その方法がわかりません。
これを配列に格納していることはわかっています。順序は配列のインデックスになります。例えば:
var listings = getListings();
console.log(listings[0]); // rank #1
console.log(listings[1]); // rank #2
// etc...
しかし、データベースにjsonオブジェクトを挿入しています。「ランク」情報を格納する最も簡単な方法は、オブジェクトにプロパティ「ランク」を作成することですが、の「インデックス」を取得する方法がわかりません。現在の配列。
何かのようなもの:
function getListings() {
return Array.prototype.map.call(document.querySelectorAll('li.g'), function(e) {
return {
rectangle: e.getBoundingClientRect(),
rank: magicFunctionThatReturnsCurrentIndex() // <-- magic happens
}
}
}
私を正しい方向に向ける助けがあれば大歓迎です!ありがとう
MDNドキュメント の説明:
コールバックは、要素の値、要素のインデックス、およびトラバースされるArrayオブジェクトの3つの引数で呼び出されます。
そう
function getListings() {
return Array.prototype.map.call(document.querySelectorAll('li.g'), function(e, rank) { // magic
return {
rectangle: e.getBoundingClientRect(),
rank: rank // <-- magic happens
}
}
}