Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/403.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何从容器对象中筛选非空对象?_Javascript_Arrays_Object_Key_Ramda.js - Fatal编程技术网

Javascript 如何从容器对象中筛选非空对象?

Javascript 如何从容器对象中筛选非空对象?,javascript,arrays,object,key,ramda.js,Javascript,Arrays,Object,Key,Ramda.js,我有一个问题,我一般不使用键,但我现在遇到了这个问题,我有一个这样的对象: let A = { 'a': null; 'b': null, 'c': null, 'd': { isOk : 'Yes' }, 'e': { isOk : 'No' }, 'f': { label : 'field'} } { 'd': { is

我有一个问题,我一般不使用键,但我现在遇到了这个问题,我有一个这样的对象:

let A = {
            'a': null;
            'b': null,
            'c': null,
            'd': { isOk : 'Yes' },
            'e': { isOk : 'No' },
            'f': { label : 'field'}
       }
 {
      'd': { isOk : 'Yes' },
      'e': { isOk : 'No' },
      'f': { label : 'field'}
 }
我想要过滤这个对象并抛出空值,我想要这样的结果:

let A = {
            'a': null;
            'b': null,
            'c': null,
            'd': { isOk : 'Yes' },
            'e': { isOk : 'No' },
            'f': { label : 'field'}
       }
 {
      'd': { isOk : 'Yes' },
      'e': { isOk : 'No' },
      'f': { label : 'field'}
 }
我无法逐一验证,因为关键点是动态的,我无法在对象上使用贴图或

我正在尝试将其转换为数组,以便以后可以使用filter方法,但没有成功:

console.log(
    pipe(
      toPairs,
      map(
        ([id, props]) => ({
          id,
          ...props,
        }),
        A,
      ),
    ),
  );

有什么帮助吗?

这都是动态的,您正在寻找的。希望这有帮助

设A={ “a”:空, “b”:空, “c”:空, 'd':{isOk:'是'}, 'e':{isOk:'No'}, 'f':{label:'field'} }; var res={}; Object.keysA.forEachkey=>{ ifA[键]!==空{ res[key]=一个[key]; } }
console.logres 如果不关心未定义的值,请将R.reject与R.equalsnull或R.isNil一起使用:

常数{拒绝,等于}=R const fn=rejectequalsnull//如果不关心未定义的值,请使用R.isNil而不是R.equals const obj={a:null,b:null,c:null,d:{isOk:Yes},e:{isOk:No},f:{label:field} 常数结果=fnobj console.logresult Ramda有一个函数filter,用于按谓词过滤对象或数组,它的对应项用于仅保留与谓词不匹配的元素,即reject

它还有一个谓词isNil来检查值是否为null或未定义

我们可以将它们放在一起编写reject isNil,以获得一个函数,该函数可以满足您的请求:

设A={A:null,b:null,c:null,d:{isOk:'Yes'},e:{isOk:'No'},f:{label:'field'} 控制台。日志拒绝为零A
const{reject,isNil}=R您可以使用Object.keys方法从对象获取键数组,然后在对象上迭代

设A={ “a”:空, “b”:空, “c”:空, 'd':{isOk:'是'}, 'e':{isOk:'No'}, 'f':{label:'field'} } 设keysArr=Object.keysA; keysArr.mapkey=>{ 如果[key]==null 删除[键] }
这是你的问题的答案吗?不,它不是,我正在寻找一个解决方案与拉姆达图书馆中提到的标签:你是对的。没有意识到需要使用ramda.jsYes完成,但reject isNil更简单。更简单: