2

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', 
}]
1

5 Answers 5

4

Lodash if you don't mind. Using: omitBy and isNull

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 result = arr.map(obj => _.omitBy(obj, _.isNull));

console.log(result);
.as-console-wrapper{min-height: 100%!important; top: 0}
<script src="https://cdn.jsdelivr.net/npm/[email protected]/lodash.min.js"></script>

Sign up to request clarification or add additional context in comments.

Comments

3

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,
    }
  ]
}

Comments

0

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)

1 Comment

Your answer could be improved with additional supporting information. Please edit to add further details, such as citations or documentation, so that others can confirm that your answer is correct. You can find more information on how to write good answers in the help center.
0

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

Comments

0

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 }

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.