【问题标题】:array typescript remove and put back an element to an array数组打字稿删除元素并将其放回数组
【发布时间】:2023-03-19 22:35:01
【问题描述】:

我使用 angular typescript 的数组有问题

我有一个包含 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
  • 我错了,我想要一个新的数组来放回元素
  • 您在寻找“撤消”功能吗?

标签: javascript arrays typescript filter


【解决方案1】:

要创建一个在其中任意位置插入新元素的数组,最简单的选择是结合Array#spliceArray#concat

  1. 创建一个包含插入点之前的所有内容的数组和一个包含之后的所有内容的数组。
  2. 创建一个包含起始数组、项目和结束数组的数组。

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)

【讨论】:

    猜你喜欢
    • 2019-03-02
    • 1970-01-01
    • 2019-11-19
    • 1970-01-01
    • 2021-09-01
    • 2018-02-24
    • 2018-03-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多