用Javascript中的另一项替换数组中的一项
Replacing an item in an array with another item in Javascript
我有一个这样的数组:
var CutRoadArray = [
['Location', '_Location'],
['Applicant Info', '_ApplicantInfo'],
['Details', '_ApplicationDetails'],
['Bond Info', '_BondInfo'],
['Attachments', '_Attachments'],
['Review', '_ReviewA']
];
我正在尝试用不同的条目替换最后一项。
到目前为止,我的代码如下: var newreviewElem = ['Review', '_ReviewB'];
var index = CutRoadArray.lastIndexOf('_ReviewA');
CutRoadArray.splice(index, 0, newreviewElem);
console.log(CutRoadArray);
然而,这不起作用。我做错了什么?
https://jsfiddle.net/yygLdo0o/你的回答其实有两点不对。
首先,您需要获取正确的索引。如果要替换最后一项,只需获取array.length.
第二,你需要指出你要替换的数目:
CutRoadArray.splice(CutRoadArray.length - 1, 1, newreviewElem);
splice中的第二个参数应该是1,而不是0。
这将替换任意大小数组的最后一个元素,因为它不依赖于数组中的项位于特定位置或特定索引。
CutRoadArray.length - 1
正在获取数组中的项数,但由于splice
使用基于零的索引,因此必须减去1以获得数组中最后一项的索引。
第二个参数(下面用粗体显示)告诉splice替换单个项。
关于拼接的文档
CutRoadArray.splice (CutRoadArray。length - 1, 1, newreviewElem);
最后一个参数是实际要添加到数组中的项。
工作小提琴应该是:
CutRoadArray.splice(index, 1, newreviewElem);
第二个参数表示需要替换多少项
您的
CutRoadArray.lastIndexOf('_ReviewA');
当然不会找到任何东西,因为CutRoadArray
包含数组,而不是字符串。
for(var iter = 0; iter < CutRoadArray.length; iter++) {
if (CutRoadArray[iter][1] == '_ReviewA') {
CutRoadArray[iter] = newreviewElem;
break;
}
}
如果你想替换元素,使用
CutRoadArray.splice(index, 1, newreviewElem);
splice的第二个参数是deleteCount, 0表示不删除任何项。
你的代码的另一个问题是CutRoadArray.lastIndexOf('_ReviewA');
将始终返回-1,因为CutRoadArray
是一个数组的数组,这意味着它的每个元素都是一个数组,它没有一个元素是'_ReviewA'
。(这是CutRoadArray
的一个元素)
我建议遍历主数组并在嵌套数组中搜索所需的索引。找到后,很容易替换索引处的嵌套数组,如array[index] = replace;
。如果没有找到,则将数组推到末尾。
function replace(array, find, replace) {
var index;
if (array.some(function (a, i) {
if (~a.indexOf(find)) {
index = i;
return true;
}
})
) {
array[index] = replace;
} else {
array.push(replace);
}
}
var cutRoadArray = [
['Location', '_Location'],
['Applicant Info', '_ApplicantInfo'],
['Details', '_ApplicationDetails'],
['Bond Info', '_BondInfo'],
['Attachments', '_Attachments'],
['Review', '_ReviewA']
];
replace(cutRoadArray, '_ReviewA', ['Review', '_ReviewB']);
document.write('<pre>' + JSON.stringify(cutRoadArray, 0, 4) + '</pre>');
相关文章:
- 第一个字第一个字符第二个字第二个字符,一直到数组结束
- jQuery对象从html表中查询为两个一维数组,用于Chartist图表
- 如何在Java Script中比较二维数组和一维数组,并将常见数据存储在另一个数组中
- 如何在javascript中使用2个一维数组创建层次结构树
- 获取字符串中的匹配项数组作为索引
- PHP json_encode不适用于一维数组
- 如何在一维数组中存储 3 个随机数,然后在 Javascript 中收到警报
- 将字符串的一维数组转换为二维数组
- Javascript使用map从一维数组创建一个二维数组
- 如何使用 wp_localize_script 更改 JavaScript 项数组
- PHP 循环通过多维到一维数组
- 使用JavaScript将对象的多维数组转换为一维数组
- 如何在javascript中最有效地重命名项数组中的键
- 用一维数组过滤多维数组
- 如何循环遍历对象数组,并使用lodash检查一个值是否与对象中的字符串或项数组中的值匹配
- mongoose.js:我如何从引用的子数组中删除一个属性,同时使用填充和使用其中一个子数组字段作为过滤器
- 使用Angulajs在嵌套数组中动态添加一个子数组
- MVC 3应用程序中的基本javascript和knockout.js:针对myCustomObject项数组的循环中f
- 在JS中根据需要的组大小将一维数组转换为多维数组的更好方法
- 比较二维数组和一维数组并删除匹配项(JavaScript)