Reputation: 35
For example I have this array, if I stringfy it it would be like this:
[{"car":"Toyota","ID":"1", "Doors": "4", "price": "20.000"},{"car":"Chevrolet","ID":"2", "Doors": "2", "price": "15.000"}]
How can I do for remove from the 2 cars: the doors and price. And only leave in the array "car" and "id"? For example:
[{"car":"Toyota","ID":"1"},{"car":"Chevrolet","ID":"2"}]
Thank you!
Upvotes: 3
Views: 11370
Reputation: 145
let arr = [{"car":"Toyota","ID":"1", "Doors": "4", "price": "20.000"},{"car":"Chevrolet","ID":"2", "Doors": "2", "price": "15.000"}]
let arr1 = arr.map(({car, ID}) => ({car, ID}));
let arr2 = arr.map(({Doors, price, ...remainingAttrs}) => remainingAttrs);
console.log('arr1:', arr1);
console.log('arr2:', arr2);
With ES6 syntax, you can deconstruct each object to create new one without writing a loop.
In your case, total number of fields remaining is same as the total number of deleted Following are the two approaches:
const arr1 = arr.map(({car, ID}) => ({car, ID}))
const arr2 = arr.map(({Doors, price, ...remainingAttrs}) => remainingAttrs)
Upvotes: 6
Reputation: 167
Adding to the answers, with ES6 and to avoid mutation and some ESlint issues.
const Array = [{"car":"Toyota","ID":"1", "Doors": "4", "price": "20.000"},
{"car":"Chevrolet","ID":"2", "Doors": "2", "price": "15.000"}];
const newArray = Array.map((object) => {
const {car, ID} = object;
return {car, ID};
});
Upvotes: 1
Reputation: 418
Adding to all other answers
Cleaner approach using ES6 syntax
var originalArray =[{"car":"Toyota","ID":"1", "Doors": "4", "price": "20.000"},{"car":"Chevrolet","ID":"2", "Doors": "2", "price": "15.000"}];
var immutableArray = originalArray.map(({Doors, price, ...rest})=> rest);
console.log(immutableArray);
Upvotes: 4
Reputation: 32145
You can use Array.prototype.map() to customise your result array, taking a callback function as parameter which returns a new customised object, having only car
and ID
properties, in each iteration.
The map() method creates a new array with the results of calling a provided function on every element in the calling array.
This is how should be your code:
var results = arr.map(function(item){
return {car : item["car"], ID : item["ID"]}
});
Demo:
var arr = [{"car":"Toyota","ID":"1", "Doors": "4", "price": "20.000"},{"car":"Chevrolet","ID":"2", "Doors": "2", "price": "15.000"}];
var results = arr.map(function(item){
return {car : item["car"], ID : item["ID"]}
});
console.log(JSON.stringify(results));
Upvotes: 4
Reputation: 2539
You must iterate over your array deleting the property on each object.
Example:
for (var i = 0; i < myArray.length; i++){
delete myArray[i].myProperty
}
Upvotes: 1
Reputation: 821
You would be looking for the delete
operator to fully remove those properties. It could look something like this:
var array = [{"car":"Toyota","ID":"1", "Doors": "4", "price": "20.000"},{"car":"Chevrolet","ID":"2", "Doors": "2", "price": "15.000"}]
for (car of array) {
delete(car.Doors);
delete(car.price);
}
You could also look into using Array.splice() for faster performance on large arrays.
Upvotes: 0
Reputation: 2438
Check comment for explanation:
var array=[{"car":"Toyota","ID":"1", "Doors": "4", "price": "20.000"},{"car":"Chevrolet","ID":"2", "Doors": "2", "price": "15.000"}];
var resultArr = array.map(function(obj){
//we take only key-value pairs we need using JS bracket notation
return {"car":obj["car"],"ID":obj["ID"]};
});
console.log(resultArr);
Upvotes: 0