我向用户显示一系列包含内容的div,用户可以从页面中删除div,以便他们不再看到它。
我想从数组中删除相同的div内容并将其添加到另一个用于填充下拉列表的数组中。
这就是我所拥有的:
//Remove function
removeCategory(index: number): void {
this.categories.splice(index, 1);
}
//Array
categories: Array<Item> = [
new Item(1, 'test1'),
new Item(2, 'test2')
];
//New Array to add previous removed item
ddoptions: Array<object> = [];
是否可以在removeCategory函数中的splice之前执行push语句?我不确定要传递什么,因为这样做会给我一个错误:
this.ddoptions.push(index);
答案 0 :(得分:4)
您可以直接拼接到push方法,因为splice会返回已删除的对象。
this.ddoptions.push(this.categories.splice(index, 1)[0]);
splice方法实际上返回一个已删除的元素数组。在您的情况下,您只删除一个,以便上述代码工作。如果要删除一个或多个元素,可以使用多种方法将这些元素添加到第二个数组中。
通过使用concat生成新数组:
this.ddoptions = this.ddoptions.concat(this.categories.splice(index, 1));
这可能会破坏因为ddoptions不再是同一个对象。这取决于你正在做什么以及角度正在做什么。
您可以通过应用推送原型将数组作为多个参数传递。
[].push.apply(this.ddoptions, this.categories.splice(index, 1));
这样,ddoptions将保持为同一个数组,并将所有新元素推入其中。
答案 1 :(得分:2)
Splice返回已删除元素的数组。你可以添加一个数组的大小测试,以确保里面有一个元素..
//Remove function
removeCategory(index: number): void {
var deletedElement = this.categories.splice(index, 1);
ddoptions.push(deletedElement[0]);
}
答案 2 :(得分:2)
Array#splice
方便地返回包含已删除元素的数组:
removeCategory (index) {
this.ddoptions.push( this.categories.splice(index, 1)[0] )
}
<小时/>
<小时/>
class Item {
constructor(a, b) { return [a, b] }
}
class Example {
removeCategory (index) {
this.ddoptions.push( this.categories.splice(index, 1)[0] )
}
//Array
categories = [
new Item(1, 'test1'),
new Item(2, 'test2')
]
//New Array to add previous removed item
ddoptions = []
}
var example = new Example()
example.removeCategory(1)
console.log(example.ddoptions)