如何剪切第6个对象的值并将其粘贴到最后一个对象中?以下是此代码的结果:
JSON.parse(json).forEach(function(obj, idx, array) {
console.log(obj);
});
答案 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)
詹姆斯
在提供答案之前,我有一些问题只是为了让我的理解清楚。
<强> 答案: 强>
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;
});