javascript更改数组中的元素

javascript change elements in array

本问题已经有最佳答案,请猛点这里访问。

我有一组对象。然后我想添加另一个对象,并将其粘贴到数组中已经存在的对象上。这意味着新对象的索引应该比我已经存在的对象大一个,元素的其余索引应该增加一个。

例如:

  • 我有6个元素的数组
  • 我的新对象是坚持索引为2的现有对象
  • 新对象进入一个索引为3的数组,所有索引以前大于2的对象现在都高一个位置。
  • 我试图将数组分成两部分,从index=2开始,推送我的新元素,然后一次又一次地连接,但是我的代码不太好用。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    for (var i in myArray) {
      if (myArray[i].name === inheritedRate.inherit) {
        var tempArr = [];
        for (var n = i; n < myArray.length; n++) {
          tempArr.push($scope.myArray[n]);
          myArray.splice(n, 1);
        }
        myArray.push(inheritedRate);
        myArray.concat(tempArr);
      }
    }

    换句话说,我有一个像这样的数组:

    1
    2
    3
    4
    5
    6
    7
    8
    myArray = [
      {name:"not selected"},
      {name:"not selected"},
      {name:"selected"},
      {name:"not selected"},
      {name:"not selected"},
      {name:"not selected"},
    ]

    我想在这里放置一个外部元素,使它看起来像这样:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    myArray = [
      {name:"not selected"},
      {name:"not selected"},
      {name:"selected"},
      {name:"new element"}, // inserted
      {name:"not selected"},          
      {name:"not selected"},
      {name:"not selected"},
    ]


    如果我理解的正确,那么问题就在于如何在数组中插入和移动元素。您可以使用拼接方法进行此操作,拼接方法具有用于插入元素的可选参数:

    下面是您的示例所需的内容:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    var myArray = [
      {name:"not selected
    <div class="
    suo-content">[collapse title=""]<ul><li>这是假设你事先知道指数(这是一个公平的假设)。但是,对于未来不需要的游客来说,这里有EDOCX1[0]</li></ul>[/collapse]</div><hr>
    <p>
    You could use <wyn>Array#splice</wyn> and take an index after the element gets inserted to the array.
    </p>

    <p>


    [cc lang="
    javascript"]var array = [{ name:"not selected" }, { name:"not selected" }, { name:"selected" }, { name:"not selected" }, { name:"not selected" }, { name:"not selected" }],
        index = 2,
        item = { name:"
    new element" };

    array.splice(index + 1, 0, item);

    console.log(array);
    1
    .as-console-wrapper { max-height: 100% !important; top: 0; }