我有一段琐碎的代码让我陷入困境。

通过下面的代码,我试图向数组的开头添加一个值,该值是当前的第一个值减去100。

var slideHeights = null;
// ... other stuff, nothing is done to slideHeights
function updateHeights() {
    slideHeights = $('*[data-anchor]').map(function(i, item) {
        return Math.floor($(item).offset().top);
    }); // [2026, 2975, 3924, 4873, 5822, 6771, 7720, 8669, 9618]
    slideHeights.unshift(slideHeights[0] - 100);
    slideHeights.push(slideHeights[9] + 100);
}

我收到错误



如果我注释了.unshift并更正了.push中的索引,则一切正常,并且第9个元素已正确添加。

我什至尝试分离值,但是没有运气:
var x = slideHeights[0] - 100;
slideHeights.unshift(x);

我对此感到非常困惑,这一定是我没有看到的琐碎问题。

有任何想法吗?
提前感谢您的回复。
祝你今天愉快! :)

最佳答案

jQuery的map不返回本机数组,您需要使用get()

slideHeights = $('*[data-anchor]').map(function(i, item) {
    return Math.floor($(item).offset().top);
}).get();

或使用toArray
slideHeights = $('*[data-anchor]').map(function(i, item) {
    return Math.floor($(item).offset().top);
}).toArray();

10-04 15:15