如何从js中的数组中删除元素[元素来自mongodb] [重复]

Posted

技术标签:

【中文标题】如何从js中的数组中删除元素[元素来自mongodb] [重复]【英文标题】:How to remove an element from an array in js [Elements are from mongodb] [duplicate] 【发布时间】:2018-11-10 00:50:42 【问题描述】:

以下是我的数组,

[
  
    "key_id": "#K000030",
    "_id": "K000030",
    "isMaster": true,
    "specialties": [
        
            "speciality1_count": "x039",
            "speciality1": "Infectious Disease"
        
    ]
,

    "key_id": "#K000442",
    "_id": "K000442",
    "keyword": "Artificial Heart Ventricle",
    "isMaster": true,
    "specialties": [
        
            "speciality1_count": "x011",
            "speciality1": "Cardiothoracic Surgery"
        ,
        
            "speciality2_count": "x041",
            "speciality2": "Interventional Cardiology"
        
    ]

这些字段来自mongoDb,我在模型中声明了每个字段。这里我想删除数组中的'isMater'和'_id'。

resp.forEach(function(v,k)
    if (v) 
      delete v.isMaster;
      delete v._id;
    
);

但它没有被删除。我不确定我在哪里犯了错误。请帮忙。

【问题讨论】:

您的代码运行良好....您如何检查它是否无法运行? 您需要小心您在问题上放置的“标签”。如果您使用“javascript”进行标记,那么无论您在标题中添加什么内容,人们都会认为您在询问“JavaScript”。 @Mamum,我只是在测试工具中查看我的回复。 @Neil Lunn,我现在会照顾好表格。 最后,它成功了,因为我在查询中添加了 .lean()。谢谢大家的支持。 【参考方案1】:

使用 JavaScript 的 array.map() 函数来执行此操作。

所以代码是:

array.map(function(item) 
  delete item._id;
  delete item.isMaster;
  return item;
);

下面是完整的工作代码:

let array = ["key_id":"#K000030","_id":"K000030","isMaster":true,"specialties":["speciality1_count":"x039","speciality1":"Infectious Disease"],"key_id":"#K000442","_id":"K000442","keyword":"Artificial Heart Ventricle","isMaster":true,"specialties":["speciality1_count":"x011","speciality1":"Cardiothoracic Surgery","speciality2_count":"x041","speciality2":"Interventional Cardiology"]];

array.map(function(item) 
  delete item._id;
  delete item.isMaster;
  return item;
);

console.log(array);

【讨论】:

如果您要忽略生成的映射数组,请不要使用 map - 如果您只是想要副作用,请改用 forEach (正如 OP 已经在做的那样)。你只是在改变原始数组 @ViJordan,我不知道为什么,但它不起作用。【参考方案2】:

我认为最短的方法。

data = data.map((_id,isMaster,...val)=>val);

var data  =[
  
    "key_id": "#K000030",
    "_id": "K000030",
    "isMaster": true,
    "specialties": [
        
            "speciality1_count": "x039",
            "speciality1": "Infectious Disease"
        
    ]
,

    "key_id": "#K000442",
    "_id": "K000442",
    "keyword": "Artificial Heart Ventricle",
    "isMaster": true,
    "specialties": [
        
            "speciality1_count": "x011",
            "speciality1": "Cardiothoracic Surgery"
        ,
        
            "speciality2_count": "x041",
            "speciality2": "Interventional Cardiology"
        
    ]
];

data = data.map((_id,isMaster,...val)=>val);

console.log(data);

【讨论】:

嗨,它不适合我。 不适合我?您是否通过在 sn-p 上运行来检查? 这不是你的 ode 错误,我需要将 .lean() 放入我的查询中。谢谢。【参考方案3】:

尝试使用键 delete map['keyName']; 从您的对象中删除元素。如下:

let resp = [
    "key_id": "#K000030",
    "_id": "K000030",
    "isMaster": true,
    "specialties": [
      "speciality1_count": "x039",
      "speciality1": "Infectious Disease"
    ]
  ,
  
    "key_id": "#K000442",
    "_id": "K000442",
    "keyword": "Artificial Heart Ventricle",
    "isMaster": true,
    "specialties": [
        "speciality1_count": "x011",
        "speciality1": "Cardiothoracic Surgery"
      ,
      
        "speciality2_count": "x041",
        "speciality2": "Interventional Cardiology"
      
    ]
  
];

resp.forEach(function(v,k)
   if(v)
      delete v['isMaster'];
      delete v['_id'];
   
);

console.log(resp)

注意:在某些 JavaScript 引擎中,delete 关键字可能会影响性能,因为它会撤消编译/JIT 优化。

【讨论】:

以上是关于如何从js中的数组中删除元素[元素来自mongodb] [重复]的主要内容,如果未能解决你的问题,请参考以下文章

Javascript中如何删除数组中指定元素后形成新的数组

Javascript中如何删除数组中指定元素后形成新的数组

在JAVA中如何从数组中删除一个元素

Mongodb如何查询内嵌数组的指定元素?

node.js如何删除数组子文档的元素?

js如何删除数组中的第一个元素