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--)
我有以下功能。预计将 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--)