在打字稿中按索引进行不变的删除/过滤/删除数组项

时间:2019-05-01 12:03:21

标签: javascript typescript

如何通过打字稿中的索引删除项目?

赞:

const myArray = ['a', 'b', 'c', 'd']

// how to remove index 2?

2 个答案:

答案 0 :(得分:3)

您可以使用a bunch of reasons,它是不可变的,并以索引作为参数:

const arr = ['a', 'b', 'c', 'd'];

function removeAt(arr, i) {
  return [...arr.slice(0, i), ...arr.slice(i+1)];
}

console.log(...removeAt(arr, 0));
console.log(...removeAt(arr, 1));
console.log(...removeAt(arr, 2));
console.log(...removeAt(arr, 3));

答案 1 :(得分:1)

.filter()的不变方式

您可以使用.filter()方法来过滤给定索引处的项目。

const myArray = ['a', 'b', 'c', 'd']
const indexToDelete = 2

console.log( myArray.filter( (elem, i) => i !== indexToDelete) )
// Logs 'a', 'b', 'd'

这不会修改原始数组。

.splice()可变的方式

如果您不必担心原始的myArray被修改,可以这样:

const myArray = ['a', 'b', 'c', 'd']
const indexToDelete = 2

myArray.splice(indexToDelete, 1)
console.log(myArray)
// Logs 'a', 'b', 'd'