将数组的一项移到最前面

时间:2018-06-21 16:55:48

标签: javascript

我需要将数组中的选定项移动到数组的开头。可以说我有5个项目的数组

[{"A", "B", "C", "D", "E"}]. 

现在,假设我选择索引2(将为C),并且需要将C(索引2)移动到数组的开头。最后,数组应显示如下:

[{"C", "A", "B", "D", "E"}]. 

2 个答案:

答案 0 :(得分:0)

解决方案::您可以使用嵌套的Array.Splice()方法来解决问题。我将其作为数组的扩展方法。

Array.prototype.move = function(from, to) {
    this.splice(to, 0, this.splice(from, 1)[0]);
};

说明:内部的splice()基本上是说要拿走要移动的项目,将其从数组中删除,然后在外部的{{1 }}。外面的splice()表示要在splice()中指定的索引处插入刚从数组中删除的项目。

to是Javascript在数组对象上创建称为Array.prototype.move的扩展方法的方式。有权使用此功能的任何代码都可以在任何数组(例如move)上调用move(from, to)。因此,我将其放置在全局位置,以便您的所有代码都能看到它!

示例:

myArray.move(2, 0)

答案 1 :(得分:0)

这里有一个例子,怎么做:

<script>
  var people = [
          {name: 'Collin', city: 'Omaha', friend: false},
          {name: 'Alice', city: 'New York', friend: false},
          {name: 'Pasha', city: 'Moscow', friend: true},
          {name: 'Denis', city: 'St. Pete', friend: true}
  ];

  function toBeginning(index)
  {
    var obj = people[index];
    people.splice(index, 1);
    people.unshift(obj);
  } 

  // To test it
  alert(people[0].name); // Alert: Collin
  toBeginning(2);        // move position 2 (Pasha) to Beginning
  alert(people[0].name); // Alert: Pasha