Rafał
Rafał

Reputation: 83

How can I made new array from firsts elements of arrays from an array

How can I made new array from firsts elements of arrays from this array ?

[["1",2],["3",2],["6",2]] 

and I want it to be

['1', '3', '6'] 

My attempt:

var newArray = []

for (i = 0; i < arrayToCompare.length - 1; i++) {
    newArray.push(arrayToCompare[[0]])
}

Upvotes: 8

Views: 145

Answers (5)

Siva Kondapi Venkata
Siva Kondapi Venkata

Reputation: 11001

Use map and get the first element using shift method. PS: not very efficient because of ...(spread) operator for each element.

const arr = [["1",2],["3",2],["6",2]];

const arrFirsts = arr.map(items => [...items].shift());

console.log(arrFirsts)
console.log(arr)

Upvotes: 0

Linh Nguyen
Linh Nguyen

Reputation: 947

This one also works

console.log(Object.keys(Object.fromEntries([["1", 2],["3", 2],["6", 2]])))

In this example, Object.fromEntries will create an object from an array of key/value pairs - it will take the first element as a key, and the second element as the value - creating something like this:

{
  "1": 2,
  "3": 2,
  "6": 2
}

Then, Object.values will grab the keys of the object, thus, removing the values and retaining the keys, giving the desired output.

P/S: just added another way to do this

console.log(Array.from([["1", 2],["3", 2],["6", 2]], x=>x[0]))

Upvotes: 2

Kobe
Kobe

Reputation: 6446

You could just use a simple map and destructure the first element:

const arr = [["1", 2],["3", 2],["6", 2]]
console.log(arr.map(([e]) => e))

The ([e]) part of that before the => is destructuring the parameter using array destructuring. It means that for each subarray passed to the map callback, e receives the value of the first element of the subarray. In ES5 and earlier, the ([e]) => e arrow function would be function(entry) { return entry[0]; }

Still, if you still don't understand the concept, prefer efficiency, or just want to go back to basics, you could use the trusty for loop, making sure to push only the first element of each subarray:

const arr = [["1", 2],["3", 2],["6", 2]]

const output = []
for (let i = 0; i < arr.length; i++) {
  output.push(arr[i][0])
}

console.log(output)

Upvotes: 8

Saurabh Agrawal
Saurabh Agrawal

Reputation: 7739

Try this:

let arr = [["1", 2], ["3", 2], ["6", 2]];
let res = arr.map(val => {
    return val[0]
})
console.log(res);

Upvotes: 2

Mamun
Mamun

Reputation: 68943

You can use Array.prototype.map() to crate a new array with the item from the first index:

var arr = [["1",2],["3",2],["6",2]]
var newArray = arr.map(i => i[0]);
console.log(newArray);

Upvotes: 2

Related Questions