TypeScript-重新定位数组中的元素

时间:2018-10-10 07:25:47

标签: typescript

我有下面的数组,其中可以包含多个元素。

"coachID" : [ 
     "choice1", 
     "choice2"
]

如果用户选择choice2,我想重新安排其内容,如下所示。

"coachID" : [ 
     "choice2", 
     "choice1"
]

类似地,如果数组中有两个以上元素;

"coachID" : [ 
     "choice1", 
     "choice2",
     "choice3"
]

并且用户选择choice2元素,则应按以下方式重新排列数组:

"coachID" : [ 
     "choice2", 
     "choice1",
     "choice3"
]

本质上,所选元素应始终放置在数组的开头。

请问如何使用TypeScript实现呢?

1 个答案:

答案 0 :(得分:2)

我认为没有关于TypeScript的任何信息。

您可以只使用splice()取出所选元素,然后使用unshift()将其重新添加到开头:

array.unshift(...array.splice(index, 1)); // index = index of the selected element

const data = [ 
     "choice1", 
     "choice2",
     "choice3"
];

const select = (array, i) => {
  if (array && array.length && i < array.length) {
    array.unshift(...array.splice(i, 1));
  }
};

console.log(data);

select(data, 1);

console.log(data);


如果要基于所选元素的值进行操作,请添加对indexOf()的调用:

array.unshift(...array.splice(array.indexOf(value), 1)); // value = selected value

const data = [ 
     "choice1", 
     "choice2",
     "choice3"
];

const select = (array, value) => {
  if (array && array.length) {
    const i = array.indexOf(value);
    
    if (i > 0) { 
      array.unshift(...array.splice(i, 1));
    }
  }
};

console.log(data);

select(data, "choice2");

console.log(data);