I have two arrays that I am trying to combine in GAS, arr2 is multidimensional.
arr1 = ["Diesel", "Solar", "Biomass"]
arr2 = [
["ABC", "Nigeria", "Diesel,Solar", 35],
["DEF", "Egypt", "Solar,Diesel", 50],
["GHI", "Ghana", "Biomass,Diesel", 70]
]
What I want to do is push the elements of arr1 into arr2 at index 3 in each row, so it looks like:
newArr = [
["ABC", "Nigeria", "Diesel,Solar", "Diesel", 35],
["DEF", "Egypt", "Solar,Diesel", "Solar", 50],
["GHI", "Ghana", "Biomass,Diesel", "Biomass", 70]
]
I have tried to use .map over arr2 to .Splice each row but couldn't get it to work. Any help would be much appreciated!
Using array.splice()
and array.map()
Syntax
array.splice(start[, deleteCount[, item1[, item2[, ...]]]])
let arr1 = ["Diesel", "Solar", "Biomass"]
let arr2 = [
["ABC", "Nigeria", "Diesel,Solar", 35],
["DEF", "Egypt", "Solar,Diesel", 50],
["GHI", "Ghana", "Biomass,Diesel", 70]
]
let newArr = arr2.map((v, i) => v.splice(3, 0, arr1[i]) && v)
console.log(newArr)
You can use Array#map
and Array#splice
methods.
let arr1 = ["Diesel", "Solar", "Biomass"],
arr2 = [
["ABC", "Nigeria", "Diesel,Solar", 35],
["DEF", "Egypt", "Solar,Diesel", 50],
["GHI", "Ghana", "Biomass,Diesel", 70]
];
// iterate over the array
let res = arr2.map((arr, i) => {
// copy array values to a new array
let newA = [...arr];
// insert new element into array based on index
newA.splice(3, 0, arr1[i]);
// return new array
return newA;
})
console.log(res)
If you want to mutate original array then you can skip the array copying portion and just Array#splice
method is enough.
let arr1 = ["Diesel", "Solar", "Biomass"],
arr2 = [
["ABC", "Nigeria", "Diesel,Solar", 35],
["DEF", "Egypt", "Solar,Diesel", 50],
["GHI", "Ghana", "Biomass,Diesel", 70]
];
// iterate over the array and put the value at specific index
arr2.forEach((arr, i) => arr.splice(3, 0, arr1[i]))
console.log(arr2)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With