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 }