我一直试图解决这个问题,但我找不到解决方案。我有两个像这样的数组
var oldList = [
{"date":"2015-06-30","amount":"-1 008,00","desc":"item1"},
{"date":"2015-06-29","amount":"-61,00","desc":"item2"},
{"date":"2015-06-29","amount":"-483,13","desc":"item2"},
{"date":"2015-06-29","amount":"-57,00","desc":"item2"},
{"date":"2015-06-28","amount":"-50,00","desc":"item1"}
]
var newList = [
{"date":"2015-06-30","amount":"-1 008,00","desc":"item1"},
{"date":"2015-06-30","amount":"-1 008,00","desc":"item1"},
{"date":"2015-06-29","amount":"-61,00","desc":"item2"},
{"date":"2015-06-29","amount":"-483,13","desc":"item2"},
{"date":"2015-06-29","amount":"-57,00","desc":"item2"},
{"date":"2015-06-28","amount":"-50,00","desc":"item1"}
]
newList数组将一直更新,我需要将newList中的项添加到oldList中,正如您所看到的,有时会有多个项具有完全相同的数据,如newList中的{"date":"2015-06-30","amount":"-1 008,00","desc":"item1"},
,任何人都有对此有何想法?
修改 忘了提到
newList也会在一段时间后删除最旧的项目,但它们仍然应该在oldList中。
答案 0 :(得分:1)
如果你想跟踪每个项目的年龄,那么给每个项目的id值等于收到它们的时间以来的秒数。
var newItem = {date="2015-06-30", amount: "-1 088,00", desc: "item1"};
var currentDate = new Date();
newItem.id = currentDate.getTime();
现在:newItem = {"id": 1435689401404, "date":"2015-06-30","amount":"-1 008,00","desc":"item1"}
这允许您遍历新数组并将具有最低id值的项(将是最旧的项)移动到旧数组。
答案 1 :(得分:0)
If I came to understand, you can try this. This function will add fields newList
a oldList
except repeated elements.
var oldList = [
{"date":"2015-06-30","amount":"-1 008,00","desc":"item1"},
{"date":"2015-06-29","amount":"-61,00","desc":"item2"},
{"date":"2015-06-29","amount":"-483,13","desc":"item2"},
{"date":"2015-06-29","amount":"-57,00","desc":"item2"},
{"date":"2015-06-28","amount":"-50,00","desc":"item1"}
];
var newList = [
{"date":"2015-06-30","amount":"-1 008,00","desc":"item1"},
{"date":"2015-06-30","amount":"-1 008,00","desc":"item1"},
{"date":"2015-06-29","amount":"-61,00","desc":"item2"},
{"date":"2015-06-29","amount":"-483,13","desc":"item2"},
{"date":"2015-06-29","amount":"-57,00","desc":"item2"},
{"date":"2015-06-28","amount":"-50,00","desc":"item1"},
{"date":"2015-06-28","amount":"-20,00","desc":"item1"},
{"date":"2015-06-28","amount":"-20,00","desc":"item1"},
{"date":"2015-06-28","amount":"-20,00","desc":"item1"},
{"date":"2015-06-28","amount":"-20,00","desc":"item1"}
];
newList.forEach(function(item){
var itemLine = [item.date, item.amount, item.desc];
var exists = oldList.some(function(oldItem){
var old = [oldItem.date, oldItem.amount, oldItem.desc];
if(old.join() === itemLine.join()) return true;
return false
});
!exists && oldList.push(item)
});
document.write("<pre>" + JSON.stringify(oldList, 0, 3) + "<pre>")