Hey I would like to create a new array, from those two elements looking like this:
var a = {szerokosc: 42, wysokosc: 53, dlugosc: null} // an object
var b = ['dlugosc', '*', 'szerokosc', '+', 'wysokosc'] // an array
The code must work if the correct name is found.
At the End I hope to receive an array like this one:
var c = ['0', '*', '42', '+', '53']
If anyone can tell me how to achieve this, I’d appreciate it. Thanks in advance.
>Solution :
When using a[x] to check the data, simply using b.map(x => a[x] || x) will return [ 'dlugosc', '*', 42, '+', 53 ] due to dlugosc having null value so you need to catch that by checking if the key is present in the object.
Steps:
- If the key is present, check if
a[x]has a value - If
a[x]doesn’t have any value, return0instead. - If
a[x]has a value, return that. - Lastly, if the key isn’t present in the object, return the same element
var a = {szerokosc: 42, wysokosc: 53, dlugosc: null} // an object
var b = ['dlugosc', '*', 'szerokosc', '+', 'wysokosc'] // an array
console.log(b.map(x => Object.keys(a).includes(x) ? !a[x] ? 0 : a[x] : x))