javascript - 数组打字稿删除元素并将其放回数组
问题描述
我正在使用角度打字稿的数组有问题
我有一个包含 5 个元素的数组,我有 4 个用例,在这 4 个用例中我需要删除 arr。[3] 在其他 1,2,3 种情况下,我需要 arr[3] 元素
arr: [] = [1,2,3,4,5];
switch (event) {
case 1:
console.log(arr); // 1,2,3,4,5
break;
case 2:
console.log(arr); // 1,2,3,4,5
break;
case 3:
console.log(arr); // 1,2,3,4,5
break;
case 4:
const arrIndex = this.arr[3];
this.arr = this.arr.filter(function(item){
return item !== arrIndex
});
console.log(arr); // 1,2,3,5
break;
}
在案例 4 之后,我删除了过滤器 arr[3] 我怎样才能放回 arr[3] 元素?
解决方案
为了创建一个在其中任意位置插入新元素的数组,您最简单的选择是组合Array#splice
和Array#concat
。
- 在插入点之前创建一个包含所有内容的数组,在之后创建一个包含所有内容的数组。
- 创建一个包含起始数组、项目和结束数组的数组。
function createArrayAndAdd(sourceArray, newItem, indexToInsert) {
const start = sourceArray.slice(0, indexToInsert);
const end = sourceArray.slice(indexToInsert);
return [].concat(start, newItem, end);
}
const originalArray = [
{ id: 1, name: "Alice" },
{ id: 2, name: "Bob" },
{ id: 4, name: "David" }
]
const elementToAdd = { id: 3, name: "Carol" };
const insertAt = 2;
console.log("result: ", createArrayAndAdd(originalArray, elementToAdd, insertAt));
console.log("original is unmodified", originalArray)
或者,您可以创建数组的副本并使用Array#splice
function createArrayAndAdd(sourceArray, newItem, indexToInsert) {
const result = sourceArray.slice();
result.splice(indexToInsert, 0, newItem);
return result;
}
const originalArray = [
{ id: 1, name: "Alice" },
{ id: 2, name: "Bob" },
{ id: 4, name: "David" }
]
const elementToAdd = { id: 3, name: "Carol" };
const insertAt = 2;
console.log("result: ", createArrayAndAdd(originalArray, elementToAdd, insertAt));
console.log("original is unmodified", originalArray)
推荐阅读
- python - Python - 如何将数据框中的每日值与字典中的每小时百分比相乘以获取具有每小时值的数据框
- android - 使用firebase的Android Studio登录不起作用
- python - 请解释->向量:在python中
- python - 无法从 sqlite 数据库获取数据到 html 页面
- windows - Bash脚本转换成批处理
- java - schemaspy:我不明白如何将它与 SQLite 一起使用
- doxygen - 有没有办法在函数/子例程“详细信息”之前显示调用/调用者图?
- python-3.x - 带有 cx_oracle 的上下文管理器并将 SQL 传递给函数
- vba - 如何从 VBA 调用 IFileOpenDialog.Show()
- c++ - 为什么我的 BaseClass:Method 代码编译(带有单冒号)?