JS:将元素插入数组

JS: inserting element into array

我有以下功能。预计将 item 插入数组的 no 位置。当插入 item 时,删除数组的最后一个元素,即 array 必须始终具有相同的长度 。使用 split() 从字符串会话变量 itemstr 中获取数组。数组的第一个元素永远不会改变,所以我总是以 n===1 开头调用这个函数。问题是该函数没有在 splice() 的意义上插入。它只是改变了元素 #no

的值
function insert_into_array(no, item)
    {
        var itemarr = sessionStorage.itemstr.split(',');

        if ((no < itemarr.length) && (no > 0)) {
            var i;
            for (i === itemarr.length - 1; i > no; i--) {
                itemarr[i] = itemarr[i - 1]; 
            }
            itemarr[no] = item;
            sessionStorage.itemstr = itemarr.toString();
        }
    }

在这一行你有一个类型:

for (i === itemarr.length - 1; i > no; i--) {

实际上应该是:i = itemarr.length - 1 而不是 i === itemarr.length - 1

没有得到您真正想要的。我的理解是您需要在 no 定义的位置插入元素并删除最后一个元素。你可以试试这个以防万一..

 function insert_into_array(no, item)
        {
            var itemarr = sessionStorage.itemstr.split(',');

            if ((no < itemarr.length) && (no > 0)) {
                itemarr .splice(no, 0, item); //Insert element at position defined by #no
                itemarr .pop(); //removes last element
              }
                sessionStorage.itemstr = itemarr.toString();

        }

正如我从问题中了解到的,您想在固定位置向数组插入一个变量,并且该位置的先前内容需要移动并且需要删除最后一个数组值。

只需使用 arr.pop() 删除最后一个元素并使用 for 循环向右移动一个位置。 这里使用 jQuery 会更简单。

你的函数的罪魁祸首是以下行

for (i === itemarr.length - 1; i > no; i--)

这里 i 将被赋值为 undefined 因为这是一个比较 (===) 而不是赋值 (=)。因此 i(undefined) > no 将始终为 false ,因此不再执行循环。 只需将比较替换为赋值

for (i = itemarr.length - 1; i > no; i--)