如何筛选深层嵌套数据?-Javascript JSON

如何筛选深层嵌套数据?-Javascript JSON,javascript,arrays,json,object,nested,Javascript,Arrays,Json,Object,Nested,我需要在三个值之间过滤一个JSON数据,我得到了两个工作的值,它们是“timestamp”,没有嵌套/深度,但有一个值是嵌套的,它是“fromMe” 我可以访问“timestamp”值,因为它不是嵌套的,但我无法让它工作以访问lastMsg->id->fromMe Javascript代码 var filterMessages = chats_ativo.filter(function(x){ return x.timestamp >= vari

我需要在三个值之间过滤一个JSON数据,我得到了两个工作的值,它们是“timestamp”,没有嵌套/深度,但有一个值是嵌套的,它是“fromMe”

我可以访问“timestamp”值,因为它不是嵌套的,但我无法让它工作以访问lastMsg->id->fromMe

Javascript代码

         var filterMessages = chats_ativo.filter(function(x){ 
            return x.timestamp >= variable1 && x.timestamp <= variable2; /* working */
            return x.timestamp >= variable1 && x.timestamp <= variable2 && x.lastMsg.id.fromMe == false; /* not working */
         });

这种方法应该是可行的,因为lastMsg属性是一个数组,我要注意,我们还应该确保lastMsg存在并且访问的属性可用

您还可以考虑查看LoTASH函数,这对于访问嵌套属性非常有用。

let chats_ativo=[{“id”:{“server”:“c.us”,“user”:“phonenumber”,“_序列化”:”phonenumber@c.us“}”,name:“name”,“isGroup”:false,“isReadOnly”:false,“unredcount”:0,“timestamp”:1596167676,“archived”:false,“lastMsg”:[{“id”:{“fromMe”:false,“remote”:{“server”:“c.us”,“user”:“phonenumber”,“\u序列化”:"phonenumber@c.us" } } }] }];
变量1=15961676;
变量2=15961676;
var filterMessages=chats_ativo.filter(函数(x){

return x.timestamp>=variable1&&x.timestampThe
lastMsg
是一个数组。需要通过索引访问它

假设它只有一个对象作为元素

return x.timestamp >= variable1 && x.timestamp <= variable2 && x.lastMsg[0].id.fromMe == false;

return x.timestamp>=variable1&&x.timestamp lastMsg是一个数组,但您试图将值作为对象来获取。请像lastMsg[0]一样使用它。id.fromMetry this=>
x.lastMsg[0].id.fromMe
谢谢@deepak!非常感谢,代码工作!谢谢@AlwaysHelping!非常感谢,代码工作!非常感谢Terry Lennox!工作得很漂亮!谢谢!!!很高兴能帮上忙!
x:[{y:[{z:'foo'}]}]
访问z
x[0].y[0].z
非常感谢你,查理!工作很漂亮!谢谢!!!很抱歉,我不能用绿色复选标记标记两个答案,对不起=(不用担心。你选择哪一个答案无关紧要-只要你学到了一些东西并解决了你的问题。
return x.timestamp >= variable1 && x.timestamp <= variable2 && x.lastMsg[0].id.fromMe == false;