首页 > 解决方案 > 数组打字稿删除元素并将其放回数组

问题描述

我正在使用角度打字稿的数组有问题

我有一个包含 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] 元素?

标签: javascriptarraystypescriptfilter

解决方案


为了创建一个在其中任意位置插入新元素的数组,您最简单的选择是组合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)


推荐阅读