Using JavaScript what's the quickest way to recursively remove properties and values from an object?

前端 未结 7 940
攒了一身酷
攒了一身酷 2020-12-03 21:03

I need to find the fastest way to remove all $meta properties and their values from an object, for example:

{
  \"part_one\": {
    \"name\": \"         


        
7条回答
  •  失恋的感觉
    2020-12-03 21:45

    // Helper function
    function removeProps(obj,keys){
      if(obj instanceof Array){
        obj.forEach(function(item){
          removeProps(item,keys)
        });
      }
      else if(typeof obj === 'object'){
        Object.getOwnPropertyNames(obj).forEach(function(key){
          if(keys.indexOf(key) !== -1)delete obj[key];
          else removeProps(obj[key],keys);
        });
      }
    }
    // The object we want to iterate
    var obj = {
      "part_one": {
        "name": "My Name",
        "something": "123",
        "$meta": {
          "test": "test123"
        }
      },
      "part_two": [
        {
          "name": "name",
          "dob": "dob",
          "$meta": {
            "something": "else",
            "and": "more"
          }
        },
        {
          "name": "name",
          "dob": "dob"
        }
      ],
      "$meta": {
        "one": 1,
        "two": 2
      }
    };
    // Utilize the utility
    removeProps(obj,['$meta']);
    // Show the result
    document.body.innerHTML = '
    ' + JSON.stringify(obj,null,4) + '
    ';

提交回复
热议问题