Javascript 从数组中删除空属性

Javascript 从数组中删除空属性,javascript,object,Javascript,Object,有人能帮忙吗 良好地处理对象 但代码在空数组中中断 removemptyproperty(数据); console.log(数据);=>{questionDetails:[{trees:123},]} 但是预期的结果应该是{questionDetails:[{trees:123}]},我的代码在空数组中中断您可以采取一种方法,函数为调用范围返回一个布尔值以删除属性或元素 检查值是否为对象 如果value是不需要的值,则返回true,对于其他值返回false 检查value是否为数组 从

有人能帮忙吗

  • 良好地处理对象
  • 但代码在空数组中中断
  • removemptyproperty(数据);
    console.log(数据);=>{questionDetails:[{trees:123},]}
    

    但是预期的结果应该是{questionDetails:[{trees:123}]},我的代码在空数组中中断

    您可以采取一种方法,函数为调用范围返回一个布尔值以删除属性或元素

  • 检查
    是否为对象

    • 如果
      value
      是不需要的值,则返回
      true
      ,对于其他值返回
      false
  • 检查
    value
    是否为数组

    • 从末尾开始迭代数组,因为会使用较大的索引更改元素的索引。较小的指数不受影响
    • 使用元素调用函数
      removemptyproperty
      ,如果必须删除元素,则调用函数
      splice
    • 对于空数组,返回
      true
  • 最后你得到了一个目标

    • 获取密钥并迭代它们
    • 使用值调用函数
      removemptyproperty
      ,如果
      true
      ,则删除属性
    • 对于没有自己属性的对象,返回
      true
  • 最后,将删除所有空数组/对象和uunwanted属性

    const
    removeEmptyProperties=值=>{
    如果(!value | | typeof value!=“object”){
    返回[undefined,null,''。包括(值);
    }
    if(数组.isArray(值)){
    设i=value.length;
    而(i--)if(removemptyproperty(value[i])value.splice(i,1);
    return!value.length;
    }
    Object.keys(value).forEach(k=>{
    如果(删除mptyproperty(值[k]),则删除值[k];
    });
    return!Object.keys(value).length;
    };
    let data={questionDetails:[{},{id:null,foo:0,bar:undefined}]};
    删除mptyproperty(数据);
    控制台日志(数据);
    data.questionDetails[0]。foo='';
    删除mptyproperty(数据);
    控制台日志(数据)只需使用正确的工具。。。删除对象的属性。它不用于“删除”数组中的条目。。
    
    const removeEmptyProperties = (obj) => {
      obj = Array.isArray(obj) ? obj.filter(val => val !== 'null' || val !== 'undefined') : obj;
      Object.keys(obj).forEach((key) => {
        //recursive for nested objects
        if (obj[key] && typeof obj[key] === 'object')
          removeEmptyProperties(obj[key]);
        //remove empty properties
        else if (
          typeof obj[key] !== 'boolean' &&
          (obj[key] == null || obj[key] == '')
        )
          delete obj[key];
        //remove empty objects
        if (
          typeof obj[key] !== 'boolean' &&
          typeof obj[key] === 'object' &&
          Object.keys(obj[key]).length == 0
        )
          delete obj[key];
      });
    };
    
    let data = {
      questionDetails: [
        {
          trees: 123,
          template: {
            id : null
          }
        },
        {
          trees: 123,
        },
      ],
    };
    
    delete data.questionDetails[1];
    
    removeEmptyProperties(data);
    console.log(data); => { questionDetails: [ { trees: 123 }, <1 empty item> ] }