首先替换所选元素,然后将整个数组移动到下一个索引

时间:2017-12-03 11:04:15

标签: javascript arrays

我陷入了一个场景,我必须在零索引处替换所选元素并将其他元素向右移动:

例如: 这些是动态数组(每次更改大小)但为了更好地理解,我只是举例:

示例

data = [{a:102,b:202},{a:234,b:332},{a:223,b:343}]

选择指数= 1

output = [{a:234,b:332},{a:102,b:202},{a:223,b:343}]

index.js

    arrangeArray (data , selected) {
      data = data.splice(0, selected)//selected =1
      //[{a:234, b:332},{a: 102, b: 202},{a:234, b:332},{a:223, b:343}]
}

上面代码的问题是我可以在第一个索引添加但不能删除所选索引 任何帮助将不胜感激

3 个答案:

答案 0 :(得分:0)



var data = [{a: 102, b: 202}, {a:234, b:332}, {a:223, b:343}]
//[{a:234, b:332},{a: 102, b: 202},{a:223, b:343}]

function arrangeArray(data , selected) {
      var selectedData = data[selected]
      var firstHalf = data.slice(0, selected)
      var secondHalf = data.slice(selected + 1, data.length)
      var newArray = [...firstHalf, ...secondHalf]
      newArray.unshift(selectedData)
      return newArray
      
      
}

console.log(arrangeArray(data, 1))




希望它可以提供帮助

答案 1 :(得分:0)

您可以使用array#splice从给定索引中删除元素。 Array#splice返回数组中已删除的元素,将其存储在变量中,然后使用array#unshift添加已删除的元素。

以下语句将removedElement[0]添加到0索引。

也可以使用array#splicedata.splice(0, 0, removedElement[0])

添加元素
  

splice()方法通过删除现有元素和/或添加新元素来更改数组的内容。

var data = [{a: 102, b: 202}, {a:234, b:332}, {a:223, b:343}];
var index = 1;
var removedElement = data.splice(index, 1);
data.splice(0, 0, removedElement[0]);
console.log(data);

var data = [{a: 102, b: 202}, {a:234, b:332}, {a:223, b:343}];
var index = 1;
var removedElement = data.splice(index, 1);
data.unshift(removedElement[0]);
console.log(data);

答案 2 :(得分:0)

这是一个简单的解决方案:

var copydata = data[selected]
data.splice(0,0,copydata) ///first copy the element
data.splice(selected,1) //cut the elemnt
return data