当在javascript中添加新元素时,splice首先在数组中添加对象

时间:2016-10-07 04:16:54

标签: javascript angularjs arrays

我正在拼接旧对象,即当新元素(对象)自动添加到数组中时,首先在数组中添加对象。

这是我使用的示例代码

  var sampleArr = [{"id":4,"hostName":"henry"},
                    {"id":3,"hostName":"jeff"},
                      {"id":2,"hostName":"mark"},
                        {"id":1,"hostName":"holder"}];

当添加5个对象({" id":5," hostName":" punk"})时,上面的数组包含4个对象我想要拼接首先添加对象ie({" id":1," hostName":" holder"})。

这是我在控制器中尝试的内容

for( var i=0; i<sampleArr.length; i++){
          var index = i;
          if(sampleArr.length > 4){
            sampleArr.splice(index,1,sampleArr[i]);

        } 
        }

但它没有像我预期的那样工作。请任何帮助我找到这个!

4 个答案:

答案 0 :(得分:1)

您可以使用简单pop()取出最后一个元素,并使用push将新元素添加到数组中!

&#13;
&#13;
var sampleArr = [{
  "id": 4,
  "hostName": "henry"
}, {
  "id": 3,
  "hostName": "jeff"
}, {
  "id": 2,
  "hostName": "mark"
}, {
  "id": 1,
  "hostName": "holder"
}];



sampleArr.pop()

sampleArr.push({
  "id": 5,
  "hostName": "punk"
})

console.log(sampleArr)
&#13;
&#13;
&#13;

答案 1 :(得分:1)

您可以使用unshift在数组的开头添加新项目,并使用pop删除数组中的最后一项。阅读更多here

试试这个:

sampleArr.unshift({"id":5,"hostName":"punk"});
sampleArr.pop();

希望会有所帮助。

答案 2 :(得分:1)

我认为OP要求FIFO(先进先出操作),因为我不明白{"id":1,"hostName":"holder"}如何成为下面数组中的第一个元素。但这是我的建议。

&#13;
&#13;
Array.prototype.performFIFO = function(element) { this.push(element); this.shift(); return this; } 

var sampleArr = [{"id":4,"hostName":"henry"},
                    {"id":3,"hostName":"jeff"},
                      {"id":2,"hostName":"mark"},
                        {"id":1,"hostName":"holder"}];



sampleArr.performFIFO({"id":5,"hostName":"fifth element"})

console.log(sampleArr)
&#13;
&#13;
&#13;

答案 3 :(得分:0)

试试这个:

sampleArr.splice(sampleArr.length,1,sampleArr[i]);