我有以下功能。期望在 no 位置将 item 插入到数组中。插入 item 时,将删除该数组的最后一个元素,即数组必须始终具有相同的长度。使用 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();
}
}
答案 0 :(得分:1)
在这一行中你有一个类型:
for (i === itemarr.length - 1; i > no; i--) {
实际应该是:i = itemarr.length - 1
而不是i === itemarr.length - 1
答案 1 :(得分:0)
没有得到你想要的东西..我的理解是你需要在由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();
}
答案 2 :(得分:0)
你的功能的罪魁祸首是
for (i === itemarr.length - 1; i > no; i--)
这里我将被赋值为undefined,因为这是一个比较(===)而不是赋值(=)。因此,我(未定义)&gt;不会永远是假的,所以不再循环执行。 只需将替换与作业替换
即可for (i = itemarr.length - 1; i > no; i--)
答案 3 :(得分:-1)
正如我从问题中所理解的那样,您希望将变量插入到固定位置的数组中,并且该位置的先前内容需要移位,并且需要删除最后一个数组值。
只需使用arr.pop()删除最后一个元素,并使用for循环将一个位置向右移动。 在这里使用jQuery会更简单。