I have either of these string:
var str = "Apple Banana Kiwi Orange: fruit. Tomato: vegetable"
or
var str = "Tomato: maybe a fruit. Apple Banana Orange: fruit. Carrots: vegetable".
I want to format it to an object of this format only using ES5.
{
Apple: "fruit",
Banana: "fruit",
Kiwi: "fruit",
Orange: "fruit",
Tomato: "vegetable"
}
I tried a combination of using split() and nested for loop, but I’m not sure it’s the best solution.
Advertisement
Answer
I had some time and quickly wrote something and relies heavily on whitespace. You may want to make sure you clean your input on each step but I leave that up to you.
function myFormatter(input) {
var result = {};
input.split('. ').forEach(function(bit) {
var a = bit.split(': ');
var keys = a[0];
var value = a[1];
keys.split(' ').forEach(function(thisKey) {
result[thisKey] = value;
});
});
return result;
}
console.log(myFormatter('Apple Banana Kiwi Orange: fruit. Tomato: vegetable'));
console.log(myFormatter('Tomato: maybe a fruit. Apple Banana Orange: fruit. Carrots: vegetable'));