/ / Uncaught TypeError:未定義のプロパティ「0」を設定できません-javascript、jquery、loops、それぞれ

Uncaught TypeError:undefinedのプロパティ '0'を設定できません - javascript、jquery、loops、each

私は続ける Uncaught TypeError: Cannot set property "0" of undefined、しかし、私は私の人生のために何が間違っているかを理解することはできません!

var anchor = [];
getAnchors();
function getAnchors() {
$(".anchor").each(function(i) {
anchor[i] = $(this).offset().left;
});
}

それでは、このコードスニペットの何が問題になっていますか? 私は宣言しました anchor 配列として。 私は今、愚かなタイプミスを1時間チェックしています。 エラーは i。しかし何 エラー?

編集: 何が間違っているのかがわかりました。

回答:

回答№1は1

あなたは使うことができます $.map 配列を構築するには:

var anchor;
function getAnchors() {
anchor = $.map($(".anchor"), function(el) { return $(el).offset().left; });
}

回答№2の場合は1

代わりに配列を返しますか?このような:

function getAnchors() {
var allAnchors = [];
$(".anchor").each(function(i) {
allAnchors.push($(this).offset().left);
});
return allAnchors;
}

var anchor = getAnchors();

回答№3の場合は1

値を割り当てる前に、オブジェクトプロパティを作成する必要があります。

    var anchor = [];
$(".anchor").each(function(i) {
anchor[i] = [{
pos: null,
id: null
}];
anchor[i]["pos"] = $(this).offset().left;
anchor[i]["id"] = $(this).attr("id");
});

次に割り当てを行い、nullを値で上書きします。


回答№4の場合は1

答えを見つけました。私はただ宣言しなければなりませんでした anchor 代わりに関数で。

getAnchors();
function getAnchors() {
var anchor = [];
$(".anchor").each(function(i) {
anchor[i] = $(this).offset().left;
});
// perhaps sort anchor
console.log(anchor);
}

返信いただきありがとうございます。


回答№5の場合は0

あなたはこれを行うことができます:

var anchors = $(".anchor").map(function() {
return {
pos: $(this).offset().left,
id: this.id
}
}).get();