将对象的值剪切到最后一个JavaScript

时间:2015-04-06 04:15:46

标签: javascript jquery

如何剪切第6个对象的值并将其粘贴到最后一个对象中?以下是此代码的结果:

JSON.parse(json).forEach(function(obj, idx, array) {  
                  console.log(obj);
        });

enter image description here

6 个答案:

答案 0 :(得分:2)

  

更新:正如您所提到的,如果任何对象具有值,则必须剪切   并搬到了最后,

  var array = JSON.parse(json),
      index;


   array.forEach(function(obj, idx) {  
       if(obj.itemId) {
           index = idx;
       }
    });     

   if(typeof index !=="undefined") {
      var tempObj = array.splice(index,1);
        // adding it the end
      array.push(tempObj);
   }

它将使用itemId删除最后一个元素并将其移动到最后。

答案 1 :(得分:0)

詹姆斯

在提供答案之前,我有一些问题只是为了让我的理解清楚。

  1. 那么,您想要删除数组中的第6项并想要将其替换为最后一项吗?
  2. 您要删除的项目总是第6项?
  3. <强> 答案:

    var item, items = JSON.parse(json), itemCount = items.length, obj, position;
    for (var i = 0; i < itemCount; i++) {
        item = items[i];
        if (item.itemId) {
            position = i;
        }
    }
    
    if (position) {
        items.push(items.splice(position, 1));
    }
    

    上面的代码将确保如果项目出现在最后位置也将被处理。如果你想克隆对象而不是引用旧对象,那么你需要遍历对象并更新新对象

    if (position) {
        obj = items.splice(position, 1);
        item = {};
        for (var property in obj) {
            if (obj.hasOwnProperty(property)) {
                item[property] = obj[property];
            }
        }
        items.push(item);
    }
    

答案 2 :(得分:0)

如果我理解你的问题,你想用类型为“award”的对象替换最后一个对象。 然后我会这样做:

JSON.parse(json).forEach(function(obj, idx, array) {  
    if (obj.type === "award") {
      array[array.length - 1] = obj;
    }
});

如果奖项已经是最后一个,那么它只会被自己覆盖。

答案 3 :(得分:0)

使用Array.prototype.splice()删除所需的元素。把它推到最后。

var arr = [];
var tgtIdx = -1;
var lastID = -1;

JSON.parse(json).forEach(function (obj, idx, array) {
    if(obj.itemId !== null && obj.itemId > lastID) {
        tgtIdx = idx;
        lastID = obj.itemId;
    }

    arr.push(obj);
})

if(tgtIdx >= 0 && tgtIdx < arr.length - 1) {
    arr.push(arr.splice(tgtIdx, 1)[0]);
}

答案 4 :(得分:0)

考虑到你得到一个对象数组,遍历所有对象,你将得到最后一个在其类型键中有奖励的对象。

for(var i = 0, _len = obj.length; i < _len; i += 1) {
    if(obj[i].type === "award") {
        ourObj = obj[i];
    }
}

obj[obj.length-1] = ourObj;

答案 5 :(得分:0)

只需过滤它:

var res = JSON.parse(json).filter(function(value) {
    return value.itemId == 6;
});