如何在javascript中过滤数组中的嵌套对象

如何在javascript中过滤数组中的嵌套对象,javascript,reactjs,algorithm,react-native,data-structures,Javascript,Reactjs,Algorithm,React Native,Data Structures,我在数组中有以下嵌套对象,我想过滤结果以返回特定项的id const data = [ {0: {id: 1, country: "SA", address: "IOXX"}}, {1: {id:2, country: "SAP", name: "N", address: "IOP"}}, {2: {id:3, country: "S", name: &quo

我在数组中有以下嵌套对象,我想过滤结果以返回特定项的id

const data = [
   {0: {id: 1, country: "SA", address: "IOXX"}},
   {1: {id:2, country: "SAP", name: "N", address: "IOP"}},
   {2: {id:3, country: "S", name: "NO", address: "I"}},
   {3: {id:4, country: "SXX", name: "NOI", address: "INDIA"}},
]
我尝试的解决方案返回null,因为我假定是嵌套对象结构

var dataREsult =  data.filter(function(el) {
  return el.id == 4;
});
备注:以上数据的结构来自iam使用的后端

我是javascript的初学者。任何帮助都将不胜感激。

Array.filter()中使用
Object.values()

const数据=[
{0:{id:1,国家:“SA”,地址:“IOXX”},
{1:{id:2,国家:“SAP”,名称:“N”,地址:“IOP”},
{2:{id:3,国家:“S”,姓名:“否”,地址:“I”},
{3:{id:4,国家:“SXX”,姓名:“NOI”,地址:“印度”},
]
const result=data.filter(el=>Object.values(el)[0].id==4);
对于(var i=data.length-1;i>=0;i--){
if(Object.values(数据[i])[0].id==4)
数据拼接(i,1)
}

控制台日志(数据)为什么你的数据是这样的结构?@adiga它是后端的api响应…作为一个没有什么意义的数据结构。它是不必要的嵌套,每个内部对象都位于一个不一致的键上(第一个0,第二个1等),因此您必须使用
object.values()
来获取它。如果可能的话,请将结构正常化。@Mitya有没有代码方面的示例?如果可以更改数据,请更改服务器代码。这太荒谬了。当然,您可以
返回Object.values(el)[0].id==4
。但是,使用该结构将很难访问和更新状态。感谢您的代码片段,对于您的示例
4
,如何仅返回
id
值。我打算用它创建一个函数。同样,您也可以将其作为函数并返回。@约翰如果您按
id
进行筛选,为什么要返回
id
值?@adiga在本例中,我试图删除id=4
的项。我可能用了错误的方法,但这是最终目标。我更新了答案,您可以使用array.forEach,并使用array.splice()删除该项@约翰德