Skip to content

Putting multiple values as single strings into object

I have an object values:

values = [{
    stringValues: "First value",
    kind: "stringValues"
  },
  {
    stringValues: "Second Value",
    kind: "stringValues"
  },
]

I need to extract the stringValues and put them into another object obj as a value to the key ghi. The final result should look like that:

{
  "name": "name",
  "abc": {
    "def": "def",
    "ghi": ["First Value", "Second Value"]
  }
}

My approach is :

var valuesStr = "";
values.forEach(
  (v) => {
    valuesStr += `'${v.stringValues}',`
  }
);

obj = {
  name: "name",
  abc: {
    def: "def",
    ghi: valuesStr,
  },
};

But the result doesn’t look quite right:

{
  "name": "name",
  "abc": {
    "def": "def",
    "ghi": "'First value','Second Value',"
  }
}

As you can see, it puts both values as 1 string.

Fiddle: https://jsfiddle.net/zrx0sp76/

Answer

Well if you want it be an array, then declare it as an array and push() values to it.

var valuesArr = [];
values.forEach(
  (v) => {
    valuesArr.push(v.stringValues);
  }
);

obj = {
  name: "name",
  abc: {
    def: "def",
    ghi: valuesArr,
  },
};