使用javascript查找两个对象数组中的差异
find difference in two arrays of objects using javascript
我有两个数组,其中包含一个"message"对象列表。每个消息对象都有一个属性"receivedTime"。
我可以按"receivedTime"对这两个数组进行排序,这样最新的消息就会排在第一位。
现在,使用underscorejs(如果适用)。。。有没有一种方法可以弹出两个数组中的差异?较新的数组将具有比原始列表更新的消息。
我只想要不在原始数组中的新消息。
对于某些上下文,我只能从API获取所有消息。所以我需要在计时器中继续这样做,并将任何新消息添加到页面上的表中(这部分我可以做到,我只需要列表中从一个调用到下一个调用的差异)。
接收时间的格式是什么?如果是时间戳,那么,保存上次收到的时间并查询列表以只筛选新的时间如何。
您可以使用纯javascript
var newones = items.filter( function(item){return (item.recievedTime>lastRecievedTime);} );
对两个数组进行排序后,将它们传递给for循环,并检查值是否在第二个数组中。
for(var i = 0; i < newMessages.length; i++) {
if(Messages[i] == newMessages[i]) {
newMessages.splice(i, 1);
}
}
否则,查找Messages的长度,并删除newMessages数组中存在的元素数。
尝试使用filter
,然后指定一个只返回不在原始数组中的函数,如下所示:
_.filter(newer_array, function(message) {
return _.contains(older_array,message);
});
或者,另一个选项是..对两个数组进行排序后,在"旧"数组中找到最新消息的receivedTime,然后在"新"数组中迭代,直到找到之前找到的receivedTime。沿着这些线。。。
var split = older[0].receivedTime
var difference = []
var i = 0
while(newer[i].receivedTime !== split) {
difference.push(newer[i]);
}
相关文章:
- 将数组对象传递到struts2中的操作类
- 如何使用jquery返回php-json数组对象
- 从其名称获取javascript数组对象
- 值未与数组对象绑定
- 如何按数组/对象值的倍数过滤对象数组
- 在表中显示数组对象
- 在数组对象中分组
- 将第二个或多个数组推送到数组对象 AngularJS 中
- 重新排列 JavaScript 数组/对象
- 键上的javascript数组对象过滤器
- handontable:在不更改数据数组/对象的情况下隐藏某些列
- 用于跟踪购物车可用性的Javascript数组/对象/哈希表
- 重建有角度的java脚本数组对象
- 对JSON数组对象进行排序
- 连接与数组对象相关的文本:方式和位置
- 哪些浏览器和版本支持将常见的类数组对象直接传递到fn.apply()
- 如何使用Handlebars循环数组对象和模板
- 是否可以引用JS数组/对象中的另一个元素
- Javascript中的名称索引-数组/对象
- 数组长度不等于数组对象