数组打字稿删除并将元素放回数组

时间:2020-08-18 09:48:41

标签: javascript arrays typescript filter

我在使用角度打字稿时遇到数组问题

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

1 个答案:

答案 0 :(得分:0)

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