javascript 如何从对象数组中只获取对象属性的非空值?[duplicate]

igsr9ssn  于 2022-10-30  发布在  Java
关注(0)|答案(5)|浏览(333)

此问题在此处已有答案

Remove empty elements from an array in Javascript(48个答案)
10个月前就关门了。
在从服务器接收到的对象数组中,我只想处理和检索对象中属性的非空值。如何在我的函数中更改它?

const arr = [{ 
text01 : 'name', 
text02 : 'email@gmail.com', 
text03 : '010-1234-5678', 
text04 : 'adress1', 
text05 : 'adress2', 
text06 : null, 
text07 : null, 
text08 : null, 
}, 
{ text01 : 'name1', 
text02 : 'email2@gmail.com', text03 : '010-1255-5148', 
text04 : 'adress3', 
text05 : 'adress4', 
text06 : null, 
text07 : null, 
text08 : null, 
}] 

getDataArr(arr) { 
  arr.forEach(item => { 
    const aaa = []; 
    for (let key in item) { 
      if (item[key] !== null) { 
        const value = item[key]; 
        aaa.push({ key, value }); 
      }
    } 
    console.log(aaa); });

获取值为

const arr = [{ text01 : 'name', 
text02 : 'email@gmail.com', 
text03 : '010-1234-5678', 
text04 : 'adress1', 
text05 : 'adress2'
},
{ 
text01 : 'name1', 
text02 : 'email2@gmail.com', text03 : '010-1255-5148', 
text04 : 'adress3', 
text05 : 'adress4', 
}]
zc0qhyus

zc0qhyus1#

Lodash,如果您不介意的话。使用:省略和为空

第一个

nhn9ugyo

nhn9ugyo2#

删除空值的一个简洁的方法是过滤对象条目,从剩下的条目中创建一个对象。

function nonNullValues(obj) {
  return Object.fromEntries(
    Object.entries(obj).filter(([key, value]) => value !== null)
  )
}
const result = theArray().map(nonNullValues);
console.log(result)

function theArray() {
  return [{
      text01: 'name',
      text02: 'email@gmail.com',
      text03: '010-1234-5678',
      text04: 'adress1',
      text05: 'adress2',
      text06: null,
      text07: null,
      text08: null,
    },
    {
      text01: 'name1',
      text02: 'email2@gmail.com',
      text03: '010-1255-5148',
      text04: 'adress3',
      text05: 'adress4',
      text06: null,
      text07: null,
      text08: null,
    }
  ]
}
8yparm6h

8yparm6h3#

const arr = [
  {
    text01: "name",
    text02: "email@gmail.com",
    text03: "010-1234-5678",
    text04: "adress1",
    text05: "adress2",
    text06: null,
    text07: null,
    text08: null,
  },
  {
    text01: "name1",
    text02: "email2@gmail.com",
    text03: "010-1255-5148",
    text04: "adress3",
    text05: "adress4",
    text06: null,
    text07: null,
    text08: null,
  },
];
const nonNull = []
for(const item of arr) {
    const obj = {}
    for(const key in item) {
        if(item[key]) obj[key] = item[key]
    }
    nonNull.push(obj)
}
console.log(nonNull)
enyaitl3

enyaitl34#

使用当前的逻辑,您只需几步就可以首先创建此函数(或者您可以更改为一个方法):

const getDataArr = (arr) => {
    const newArr = [];
    for (const item of arr) {
        const currObject = {};
        for (const key in item) {
            if (item[key] !== null) currObject[key] = item[key];
        }
        newArr.push(currObject);
    }
    return newArr;
};

然后,您可以使用以下命令打印其结果:

console.log(getDataArr(arr));

相关问题