I want code optimisation for if condition because I've to add more key value pair in if condition with &&. So I've array of object as follow just as example.
let arr = [{
a:12,
b:14,
c:undefined,
d:undefined,
e:56,
f:"file 1",
g:"file 2",
h:undefined
}]
for(let key of arr){
if(key.a!==undefined && key.b!==undefined && key.c!==undefined && key.d!==undefined && key.e!==undefined && key.f!==undefined && key.g!==undefined){
console.log("code works")
}else{
console.log("fails")}
}
So I've to add multiple key value to check for condition for undefined value. I'm trying to optimise please help or any suggestion. thanks you.
CodePudding user response:
You can use Object.values()
and some()
to write a shorter code. This is not a huge optimization
let arr = [{
a:12,
b:14,
c:undefined,
d:undefined,
e:56,
f:"file 1",
g:"file 2",
h:undefined
}]
for(let key of arr){
if(Object.values(key).some((x) => x===undefined)){
console.log("fails")
}else{
console.log("code works")
}
}
CodePudding user response:
Create a function that accepts an object as an argument, gets its values
, and then use some
to check if any of the values are undefined
. some
returns after finding the first match to the condition.
const arr=[{a:12,b:14,c:undefined,d:undefined,e:56,f:'file 1',g:'file 2',h:undefined},{a:12,b:14,c:3,d:'bob from accounting',e:56,f:'file 1',g:'file 2',h:23},{a:12,b:14,c:3,d:'bob from accounting',e:56,f:'file 1',g:'file 2',h:undefined}];
function test(obj) {
const values = Object.values(obj);
return values.some(p => p === undefined);
}
const out = arr.map((obj, i) => {
return `Code ${test(arr[i]) ? 'fails' : 'works'}`;
});
console.log(out);
CodePudding user response:
If I understand the requirement correctly, You have dynamic properties in an object and you want to check if all the properties in an object having values. If Yes,
Try this :
let arr = [{
a:12,
b:14,
c:undefined,
d:undefined,
e:56,
f:"file 1",
g:"file 2",
h:undefined
}];
arr.forEach(obj => {
let str = '';
Object.keys(obj).forEach(key => {
str = obj[key] ? 'code works' : 'fails'
})
console.log(str);
});