Home > Net >  How to get only non-null value of object property from object array?
How to get only non-null value of object property from object array?

Time:01-02

In the object array received from the server, I want to process and retrieve only the non-null value of the property in the object. How can I change it in my function??

const arr = [{ 
text01 : 'name', 
text02 : '[email protected]', 
text03 : '010-1234-5678', 
text04 : 'adress1', 
text05 : 'adress2', 
text06 : null, 
text07 : null, 
text08 : null, 
}, 
{ text01 : 'name1', 
text02 : '[email protected]', 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); }); 

Get the value as

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

CodePudding user response:

const arr = [
  {
    text01: "name",
    text02: "[email protected]",
    text03: "010-1234-5678",
    text04: "adress1",
    text05: "adress2",
    text06: null,
    text07: null,
    text08: null,
  },
  {
    text01: "name1",
    text02: "[email protected]",
    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)

CodePudding user response:

A concise way to remove null values is to filter object entries, creating an object from those remaining. With that, just map over the input array...

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 protected]',
      text03: '010-1234-5678',
      text04: 'adress1',
      text05: 'adress2',
      text06: null,
      text07: null,
      text08: null,
    },
    {
      text01: 'name1',
      text02: '[email protected]',
      text03: '010-1255-5148',
      text04: 'adress3',
      text05: 'adress4',
      text06: null,
      text07: null,
      text08: null,
    }
  ]
}

CodePudding user response:

Using your current logic you were just a couple steps away first create this function (or you can change to a method):

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;
};

Then you can print its result using:

console.log(getDataArr(arr));

CodePudding user response:

this way

const arr = 
  [ { text01 : 'name'
    , text02 : '[email protected]'
    , text03 : '010-1234-5678'
    , text04 : 'adress1'
    , text05 : 'adress2'
    , text06 : null
    , text07 : null
    , text08 : null
    } 
  , { text01 : 'name1'
    , text02 : '[email protected]'
    , text03 : '010-1255-5148'
    , text04 : 'adress3'
    , text05 : 'adress4'
    , text06 : null
    , text07 : null
    , text08 : null
    } 
  ] 
arr.forEach(obj=>
  {
  Object.keys(obj).forEach(key =>
    {
    if (obj[key] === null) delete obj[key] 
    })
  })

console.log( arr)
.as-console-wrapper {max-height: 100%!important;top:0 }

  • Related