【问题标题】:creating custom array by matching array n object in javascript / node js通过匹配 javascript / node js 中的数组 n 对象创建自定义数组
【发布时间】:2022-02-16 19:22:15
【问题描述】:
let obj ={
  97:{
   data:"OS",
   location:"system",
   access:"globally",
   parameters:"aed31"
  },
  490:{
   data:"Ae-ds",
   location:"rootpath",
   access:"admin rights",
   parameters:"4fsje"
  },
  278:{
   data:"config",
   location:"system",
   access:"private",
   parameters:"aed31"
  },
  6230:{
   data:"secure-data",
   location:"system-private",
   access:"config-data",
   parameters:"aed31"
  },
  4023:{
   data:"linux",
   location:"system",
   access:"globally",
   parameters:"rf241"
  },
  870:{
   data:"deh-we",
   location:"adminpath",
   access:"admin rights",
   parameters:"4fsje"
  },
}

let data=[
 { name:"OS"
 },
 { name:"Ae-ds"
 },
 { name:"config"
 },
 { name:"secure-data"
 }
];

data.map((value)=>{
console.log(value.name)
})

我正在尝试查找数据数组中存在的名称并将其与 obj.data 字段匹配,并希望将这样的键存储在那里

let dataDetail= [{id:97, config_type:"system Data"}];

类似于名称 OSAs-ds 或我从 data.map() 获得的任何名称我想检查它是否在对象内部可用或不是并获取它的密钥并将其推入 id 中的 dataDetail 数组中

let data=[
 { name:"OS"
 },
 { name:"Ae-ds"
 },
 { name:"config"
 },
 { name:"secure-data"
 }
];

let jsonData={
  97:{
   data:"OS",
   location:"system",
   access:"globally",
   parameters:"aed31"
  },
  490:{
   data:"Ae-ds",
   location:"rootpath",
   access:"admin rights",
   parameters:"4fsje"
  },
  278:{
   data:"config",
   location:"system",
   access:"private",
   parameters:"aed31"
  },
  6230:{
   data:"secure-data",
   location:"system-private",
   access:"config-data",
   parameters:"aed31"
  },
  4023:{
   data:"linux",
   location:"system",
   access:"globally",
   parameters:"rf241"
  },
  870:{
   data:"deh-we",
   location:"adminpath",
   access:"admin rights",
   parameters:"4fsje"
  },
}
let details;
data.map((value)=>{

 Object.values(jsonData).map((dataName)=>{
  if(dataName.data===value.name){
   dataDetail=[{id:Object.keys(jsonData), config_type:"system Data"}];
   console.log("checking",dataDetail);
  }
 });
});

但它在这里不起作用,我不知道这里缺少什么 因为我的预期输出就像如果我控制台 dataDetail;

[{id:97, config_type:"system Data"}]
[{id:490, config_type:"system Data"}]
[{id:278, config_type:"system Data"}]
[{id:6230, config_type:"system Data"}]

【问题讨论】:

  • 与您的问题无关:您不应使用map 记录数组元素。请改用forEach。使用map 存储元素转换的结果。

标签: javascript node.js nodes


【解决方案1】:

可以通过forEach 中的find 轻松管理

let data=[
 { name:"OS"
 },
 { name:"Ae-ds"
 },
 { name:"config"
 },
 { name:"secure-data"
 }
];

let jsonData={
  97:{
   data:"OS",
   location:"system",
   access:"globally",
   parameters:"aed31"
  },
  490:{
   data:"Ae-ds",
   location:"rootpath",
   access:"admin rights",
   parameters:"4fsje"
  },
  278:{
   data:"config",
   location:"system",
   access:"private",
   parameters:"aed31"
  },
  6230:{
   data:"secure-data",
   location:"system-private",
   access:"config-data",
   parameters:"aed31"
  },
}

let dataDetails = [];

Object.keys(jsonData).forEach((key) => {
    if(data.find((el) => el.name === jsonData[key].data)){
    dataDetails.push([{id:key, config_type:"system Data"}])
    console.log([{id:key, config_type:"system Data"}])
  }
})
console.log(dataDetails)

【讨论】:

  • 嗨@cmgchess 我可以单独获取数据吗?就像[{ "id": "97", "config_type": "system Data" }] 一样,您可以在我的最后一个代码-sn-p 中看到 1 次输出后它停止并执行第二个数据作为新数据我将所有内容都放在一个数组中,我希望所有内容都放在不同的不同数组中希望你明白吗?
  • 如果我这样做 console.log("checking", dataDetails); 它应该像这样显示我 checking [{id:97, config_type:"system Data"}] checking [{id:490, config_type:"system Data"}] checking [{id:278, config_type:"system Data"}] checking [{id:6230, config_type:"system Data"}]
  • 所以您不想将值存储在数组中以备后用?
  • 我想将值存储在数组中并像这样[{id:490, config_type:"system Data"}] 而不像这样[{id:490, config_type:"system Data"}, {id:97, config_type:"system Data"}] 那样单独显示它们我希望你能明白吗?
  • 这里所有的输出都在一个数组中,我试图将它们作为新的输出放在单独的单独数组中
猜你喜欢
  • 2014-01-26
  • 2014-06-20
  • 1970-01-01
  • 2015-05-15
  • 2021-09-24
  • 1970-01-01
  • 1970-01-01
  • 2017-06-21
  • 2021-01-26
相关资源
最近更新 更多