Кажется, $.scoreArray.labels
- это undefined
, когда вы пытаетесь получить к нему доступ.
Убедитесь, что оно определено до того, как попытаетесь добавить к нему элементы.
В качестве примечания, другие правы в том, что если вы собираетесь использовать именованные свойства, вы должны использовать объект вместо массива.
Если вам нужен массив объектов, сделайте следующее:
$.scoreArray = {
scores: [],
labels: []
};
$(".word").each(function (i) {
$.scoreArray.labels[ i ] = {};
$.scoreArray.labels[ i ].label = $(this).attr("data-label");
$.scoreArray.labels[ i ].x = $(this).attr("data-x");
}
или это:
$.scoreArray = {
scores: [],
labels: []
};
$(".word").each(function (i) {
$.scoreArray.labels[ i ] = {label: $(this).attr("data-label"),
x: $(this).attr("data-lx")
};
}
или, возможно, еще лучшим решением было бы использование .map()
.Это (и другие решения) предполагают, что вы не добавляете в существующий массив.
$.scoreArray.labels = $(".word").map(function (i) {
return {label: $(this).attr("data-label"),
x: $(this).attr("data-lx")
};
}).get();