Push elements dynamically using javascript

Viewed 80

I am getting the points from the multidimensional array using map, but I am getting array of array values.

I need the below format:

[36, 122, 25]

But I'm getting the multi array of points.

Below is my code and output

var data = [{
    "name": "ramu",
    "id": "719",
    "gmail": "ramu@gmail.com",
    "ph": 988989898,
    "points": 36
  },
  {
    "name": "ravi",
    "id": "445",
    "gmail": "ravi@gmail.com",
    "ph": 4554545454,
    "points": 122
  },
  {
    "name": "karthik",
    "id": "866",
    "gmail": "karthik@gmail.com",
    "ph": 2332233232,
    "points": 25
  }
]

var result = data.map(function(arr, count) {
  return [arr.points];
});

console.log(result);

output is:

[[36], [122], [25]]
4 Answers

Try below code:

var data = [{"name":"ramu","id":"719","gmail":"ramu@gmail.com","ph":988989898,"points":36},
        {"name":"ravi","id":"445","gmail":"ravi@gmail.com","ph":4554545454,"points":122},
        {"name":"karthik","id":"866","gmail":"karthik@gmail.com","ph":2332233232,"points":25}]          
var result = data.map(function(arr, count) {  return arr.points;});
console.log(result);

var data = [{"name":"ramu","id":"719","gmail":"ramu@gmail.com","ph":988989898,"points":36},
            {"name":"ravi","id":"445","gmail":"ravi@gmail.com","ph":4554545454,"points":122},
            {"name":"karthik","id":"866","gmail":"karthik@gmail.com","ph":2332233232,"points":25}]          
var result = data.map(function(arr, count) {  return arr.points;});
console.log(result);

Remove the [] from return statement. It creates new array and push it to original.

The function is returning an array of single-element arrays because .map() returns an array, and within each iteration of .map() your function is returning [arr.points] (an element in an array). Change this to return arr.points and you're set.

Also, since you're merely returning a value in the .map() we can simplify the callback function to:

var result = data.map(arr => arr.points);

var data = [{
    "name": "ramu",
    "id": "719",
    "gmail": "ramu@gmail.com",
    "ph": 988989898,
    "points": 36
  },
  {
    "name": "ravi",
    "id": "445",
    "gmail": "ravi@gmail.com",
    "ph": 4554545454,
    "points": 122
  },
  {
    "name": "karthik",
    "id": "866",
    "gmail": "karthik@gmail.com",
    "ph": 2332233232,
    "points": 25
  }
]
var result = data.map(arr => arr.points);
console.log(result);

In your code you are using [] that creates a new array using arr.points values. Remove the [] from return statement.

var data = [{
    "name": "ramu",
    "id": "719",
    "gmail": "ramu@gmail.com",
    "ph": 988989898,
    "points": 36
  },
  {
    "name": "ravi",
    "id": "445",
    "gmail": "ravi@gmail.com",
    "ph": 4554545454,
    "points": 122
  },
  {
    "name": "karthik",
    "id": "866",
    "gmail": "karthik@gmail.com",
    "ph": 2332233232,
    "points": 25
  }
]
var result = data.map(function(arr, count) {
  return arr.points;
});
console.log(result);

Related