0

I am new to JavaScript I am trying to combine two object from two arrays

First Array

const TESTARRAY = [{
  id: 3,
  parameter1: 'x',
  parameter2: 'y',
  parameter3: 'z'
}, {
  id: 1,
  parameter1: 'u',
  parameter2: 'v',
  parameter3: 'w'
}, {
  id: 5,
  parameter1: 'q',
  parameter2: 'w',
  parameter3: 'e'
}]

Second array

var json = [{
  name: 'aaa'
}, {
  name: 'ccc'
}, {
  name: 'bbb'
}];

Expected Output

[{
  additional: "aaa",
  id: 3,
  parameter1: "x",
  parameter2: "y",
  parameter3: "z"
}, {
  additional: "ccc",
  id: 1,
  parameter1: "u",
  parameter2: "v",
  parameter3: "w"
}, {
  additional: "bbb",
  id: 5,
  parameter1: "q",
  parameter2: "w",
  parameter3: "e"
}]

Code I tried below in JSFiddle I try to loop the var and add the element to TESTARRAY but I am getting same value "bbb" anyone can guide me for better approach?

const TESTARRAY = [{
  id: 3,
  parameter1: 'x',
  parameter2: 'y',
  parameter3: 'z'
}, {
  id: 1,
  parameter1: 'u',
  parameter2: 'v',
  parameter3: 'w'
}, {
  id: 5,
  parameter1: 'q',
  parameter2: 'w',
  parameter3: 'e'
}]
var json = [{
  name: 'aaa'
}, {
  name: 'ccc'
}, {
  name: 'bbb'
}];

for (var key in json) {
  if (json.hasOwnProperty(key)) {
    TESTARRAY.map(i => i.additional = json[key].name)
  }
}


console.log(TESTARRAY)

2
  • You don't have JSON. You have plain objects and plain arrays. JSON is a text serialisation format similar to XML. It will always be represented as a string. Commented Aug 12, 2020 at 5:56
  • Just loop and update same index of the array for (const [k, v] of json.entries()) {TESTARRAY[k]['additional'] = v.name;} Commented Aug 12, 2020 at 6:02

3 Answers 3

3

You could map a new array with merged properties of the second array at the same index.

const
    array1 = [{ name: 'aaa' }, { name: 'ccc' }, { name: 'bbb' }],
    array2 = [{ id: 3, parameter1: 'x', parameter2: 'y', parameter3: 'z' }, { id: 1, parameter1: 'u', parameter2: 'v', parameter3: 'w' }, { id: 5, parameter1: 'q', parameter2: 'w', parameter3: 'e' }],
    merged = array1.map(({ name: additional }, i) => ({ additional, ...array2[i] }));

console.log(merged);
.as-console-wrapper { max-height: 100% !important; top: 0; }

Sign up to request clarification or add additional context in comments.

1 Comment

It works also thank you really appreciate your help.
2

Assuming the two arrays you want to combine are the same size. You can simply do something like this.

for (let i = 0; i < TESTARRAY.length; ++i)
{
    TESTARRAY[i] = {...json[i], ...TESTARRAY[i]};
}

1 Comment

Its working thank you very much for your time and help
1

map second argument is an index of the current item, you can use that to reference your json variable.

const TESTARRAY = [{
    id: 3,
    parameter1: "x",
    parameter2: "y",
    parameter3: "z"
  },
  {
    id: 1,
    parameter1: "u",
    parameter2: "v",
    parameter3: "w"
  },
  {
    id: 5,
    parameter1: "q",
    parameter2: "w",
    parameter3: "e"
  }
];
var json = [{
    name: "aaa"
  },
  {
    name: "ccc"
  },
  {
    name: "bbb"
  }
];

const newTestArray = TESTARRAY.map((curr, index) => ({
  additional: json[index].name,
  ...curr
}));

console.log(newTestArray);

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.