- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在我的 Angular5 应用程序中,当我尝试使用 splice 关键字从包含在 selectedPersonArray 中的 peoples 数组中删除条目时,有时会在 peoples 数组中创建空条目。我完成的代码如下所示:
import { Component } from '@angular/core';
import { DragulaService } from 'ng2-dragula/ng2-dragula';
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.css']
})
export class AppComponent {
selectedPersonArray = [];
peoples = [
{
id: 7,
firstName: 'Sobin 7',
lastName: 'Thomas 7'
}
];
people = [
{
id: 1,
firstName: 'First Name 1',
lastName: 'Last Name 1'
},
{
id: 2,
firstName: 'First Name 2',
lastName: 'Last Name 2'
},
{
id: 3,
firstName: 'First Name 3',
lastName: 'Last Name 3'
},
{
id: 4,
firstName: 'First Name 4',
lastName: 'Last Name 4'
}
];
toggleItemInArr(arr, item) {
const index = arr.indexOf(item);
index === - 1 ? arr.push(item) : arr.splice(index, 1);
}
addThisPersonToArray(person: any, event) {
if (!event.ctrlKey) {
this.selectedPersonArray = [];
}
this.toggleItemInArr(this.selectedPersonArray, person);
}
isPersonSelected(person: any) {
return (this.selectedPersonArray.indexOf(person) !== -1);
}
constructor(private dragula: DragulaService) {
dragula.setOptions('second-bag', {
copy: function (el, source) {
return source.id === 'source';
},
removeOnSpill: true,
copySortSource: false,
accepts: function(el, target, source, sibling) {
return target.id !== 'source';
}
});
}
ngOnInit() {
this.dragula
.out
.subscribe(value => {
for(let select of this.selectedPersonArray){
let i= 0;
for (let entry of this.peoples) {
if(entry.id == select.id){
let index = this.people.indexOf(select.id);
if (this.peoples.length >0){
this.peoples.splice(i, 1);
}
}
i++;
}
}
console.log("on after loop "+JSON.stringify( this.peoples));
this.selectedPersonArray.length = 0;
});
}
}
app.component.html
<table border=1 bgcolor="yellow">
<tbody id ='source' [dragula]='"second-bag"' [dragulaModel]="people">
<tr *ngFor="let person of people" >
<td>{{person.id}}</td>
<td>{{person.firstName}}</td>
<td>{{person.lastName}}</td>
</tr>
</tbody>
</table>
<table border=2>
<tbody id ='dest' [dragula]='"second-bag"' [dragulaModel]="peoples">
<tr *ngFor="let person of peoples" (click)="addThisPersonToArray(person, $event)" [class.active]="isPersonSelected(person)">
<td>{{person.id}}</td>
<td>{{person.firstName}}</td>
<td>{{person.lastName}}</td>
</tr>
</tbody>
</table>
实际上我想要的是删除使用控制键从 ng2-dragular secondary-bag 的“dest”容器中选择的多个项目。它正在工作,但它也创建空条目
最佳答案
你能试试这个吗?
this.peoples
.filter(people => !this.selectedPersonArray
.find(selectdPeople => people.id === selectdPeople.id)
);
关于javascript - splice 在从数组中删除条目时创建 NULL 条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48286506/
我正在使用 JavaScript splice() 方法从数组中删除一个元素。代码如下, var fruits = ["Banana", "Orange", "Apple", "Mango"]; fu
JavaScript 拼接方法实际上将数组拆分为两个,如下例所示: var a = ['a','b','c']; var b = a.splice(0,2); console.log(a); // o
我正在尝试从包含表单输入字段的数组中删除某些值: allFields = theForm.getElementsByTagName("INPUT"); for(j = 0; j =0; j--){
var arr = document.querySelectorAll("a[href*='somestring']") 返回控制台中看起来像数组的内容。方括号 [] 和 arr.length = 7
我正在尝试从 javascript 中的数组中删除特定项目,但似乎无法使 [array].splice 函数正常工作。 此代码用于检查 SVG 对象是否与另一个对象发生碰撞(对于游戏)。玩家总是希望与
所以这是一个语法问题,我一直在阅读 MDN 文档,但我找不到类似的例子。我从这里得到了这个特定的代码片段:https://bost.ocks.org/mike/shuffle/正如我正在阅读随机数组一
这个问题在这里已经有了答案: What is the difference between call and apply? (23 个回答) 关闭 8 年前。 我正在尝试将可在函数内部访问的 arg
我有一个数组,它在任何时候都可能包含以下值的任意组合: var positions = ['first', 'second', 'third', 'fourth']; 目标是重建一个 Javascri
我运行它是为了获取 HTML 表单控制元素的集合 var elem = document.getElementById('display').elements; 我可以运行它来获取一组元素: var
如何正确使用Array.Splice? var myEmptyData = []; myEmptyData = $.parseJSON('[{ "m_sPartNumber": "B104-9
这个问题已经有答案了: Why does changing an Array in JavaScript affect copies of the array? (13 个回答) 已关闭 7 年前。
我正在为每个单击的导航容器设置一个 cookie。 它设置一个连接的数组并设置cookie值。如果再次单击,则将其从数组中删除。 它有点问题。 只有点击其他元素后才会拼接。然后它的行为就很奇怪。 可能
Javascript(使用 jQuery): var paragraphs = [ ['This is my first paragraph content of the first arra
如果我正在制作一款游戏,并且我希望某些内容仅每隔一段时间更新一次,那么解决此问题的最佳方法是什么? 我天真的想法只是保留一个通过 mod 循环的“帧”跟踪器。数学并以特定数字更新特定内容。 有更好的方
这个问题已经有答案了: How do you clone an array of objects in JavaScript? (33 个回答) using splice(0) to duplicat
我有数组 x、y 和 z。在遍历 x 时,根据条件我需要不断从 z 中删除元素。这是我正在尝试做的事情: var x = ["test0", "test1", "test2"]; var y = ["
我有 3 个包含时间段的数组,它们是字符串...像这样: $scope.shiftMorning = ['09:00', '09:30', '10:00', '10:30', '11:00', '11
我在我的表单上创建了一个功能,我可以通过单击一个按钮为多个图像添加多个文件输入,这按预期工作。现在,当我尝试使用 .splice 删除输入字段时,它会不断删除我的输入字段所在的数组的最后一项,而不是具
我必须向数组添加一些值。 代码示例: temp[0]=new Array("0","0"); temp[1]=new Array("0","0"); temp[2]=new Array("0","0"
我有一个包含字符串的数组,如果字符串中没有任何内容,我想使用 .splice() 将其从数组中删除。 不知何故,它没有得到所有空条目。如果开头有 2 个空条目,它只会得到一个。 这是我的 fiddle
我是一名优秀的程序员,十分优秀!