Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 不允许数组中的项具有相同的值_Arrays_Angular_Typescript - Fatal编程技术网

Arrays 不允许数组中的项具有相同的值

Arrays 不允许数组中的项具有相同的值,arrays,angular,typescript,Arrays,Angular,Typescript,我现在正在做的事情对我的大脑来说有点复杂。我有一些数据,这些数据有一个字段“position”,根据该位置,它们将按照该顺序显示在客户端(例如,对于用户添加的最后一个项目,他可以将其位置更改为1,在客户端,它将首先显示,然后显示其余数据),他可以始终更改位置(从1到8,然后将显示最后一个,因为该数据数量最多限制为8)。 但问题是,当用户将位置(例如从4更改为1)时,已经有一个位置为1的数据,因此我们必须使用位置相同的项,这是不应该发生的。是否有解决方案来检查数组,检查相同的值,然后替换它们 例如

我现在正在做的事情对我的大脑来说有点复杂。我有一些数据,这些数据有一个字段“position”,根据该位置,它们将按照该顺序显示在客户端(例如,对于用户添加的最后一个项目,他可以将其位置更改为1,在客户端,它将首先显示,然后显示其余数据),他可以始终更改位置(从1到8,然后将显示最后一个,因为该数据数量最多限制为8)。 但问题是,当用户将位置(例如从4更改为1)时,已经有一个位置为1的数据,因此我们必须使用位置相同的项,这是不应该发生的。是否有解决方案来检查数组,检查相同的值,然后替换它们

例如: 共有2个项目,项目1的位置为1,项目2的位置为2。如果我们将项目2的位置更改为1,则两个项目都将有一个,但项目1应自动递增为2

到目前为止,我尝试的是对数组执行forEach,并根据条件检查值,但这不是最好的。是否有一些算法可以实现这一点

this.items.forEach((itemRes) => {
      let itemDash = result;
      if (itemRes.position === result.ordinal) {
        if(itemRes.position !== result) {
          itemRes.ordinal++;
        }
      } else if (itemRes.position === this.items.length && itemRes.ordinal >= 8) {
        itemRes.position--;
      }
    })
这是我检查和更改数组项及其位置的代码。

这一要点值得称赞:

如果我理解正确,您可能希望在链接中显示类似的内容,因此在“类型脚本化”并使其适用于您的(简化)案例时:

array=[1,2,3,4,5];
移动(数组、元素、增量){
设index=array.indexOf(元素);
设newIndex=index+delta;
//已经在顶部或底部。
if(newIndex<0 | | newIndex==array.length)返回;
让索引=[index,newIndex].sort();//对索引进行排序
//从最低索引替换两个元素,恢复顺序
拼接(索引[0],2,数组[1]],数组[0]];
}
向上移动(元素){
this.move(this.array,element,-1);
}
向下移动(元素){
this.move(this.array,element,1);
}
以及相应的HTML:

<div *ngFor="let a of array">
  {{a}} 
  <button (click)="moveUp(a)">Move Up</button>
  <button (click)="moveDown(a)">Move Down</button>
</div>

{{a}
上移
下移

这也会给你一些启发::)

欢迎来到SO。请提供一份报告。例如,为什么不为初次尝试共享代码?此外,简明地描述您的问题,重点关注有问题的部分也很有帮助。分享您的代码
<div *ngFor="let a of array">
  {{a}} 
  <button (click)="moveUp(a)">Move Up</button>
  <button (click)="moveDown(a)">Move Down</button>
</div>