How to get highest 3 value from object array - ES6/JS [closed] - javascript

Closed. This question needs to be more focused. It is not currently accepting answers.
Want to improve this question? Update the question so it focuses on one problem only by editing this post.
Closed 1 year ago.
The community reviewed whether to reopen this question 1 year ago and left it closed:
Original close reason(s) were not resolved
Improve this question
I simply want to get 3 highest price value objects as new array. How would I do that easily ?
For example i got array like this ..
const data =
[ { name: 'x', color: 'red', price: 15 }
, { name: 'y', color: 'black', price: 5 }
, { name: 'z', color: 'yellow', price: 25 }
, { name: 't', color: 'blue', price: 10 }
, { name: 'n', color: 'blue', price: 60 }
]

You can sort the array by the price property (with Array.sort) and get the first three items (with Array.slice):
const arr=[{name:"x",color:"red",price:15},{name:"y",color:"black",price:5},{name:"z",color:"yellow",price:25},{name:"t",color:"blue",price:10},{name:"n",color:"blue",price:60}];
const result = arr.sort((a,b) => b.price - a.price).slice(0, 3)
console.log(result)

Related

Change array elements [closed]

Closed. This question needs to be more focused. It is not currently accepting answers.
Want to improve this question? Update the question so it focuses on one problem only by editing this post.
Closed 8 months ago.
Improve this question
There is an array
[ [ 'Alex', '167%' ],
[ 'Benjamin', '127%' ],
[ 'Elijah', '117%' ],
[ 'Liam', '136%' ],
[ 'Theodore', '135%' ],
[ 'Mia', '128%' ] ]
I need to make it look like this
[ 'Alex 167%',
'Benjamin 127%',
'Elijah 117%',
'Liam 136%',
'Theodore 135%',
'Mia 128%' ]
I need the elements of each nested array to be combined into a string and such a number of spaces are inserted between them so that the length of this string is 29 characters
You could use a map combined with padEnd
const items = [
['Alex', '167%'],
['Benjamin', '127%'],
['Elijah', '117%'],
['Liam', '136%'],
['Theodore', '135%'],
['Mia', '128%']
];
const combined = items.map(([name, percent]) =>
name.padEnd(29 - percent.length, ' ') + percent
);
console.log(combined);

delete and modify properties in array inside json object [closed]

Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 12 months ago.
Improve this question
Given the following JSON:
const myJson = {
id: 8,
active: true,
invoice: "2022/1001",
invoiceDate: "2022-02-02",
clientId: 1,
storeId: 1,
total: 76.95,
itens: [
{
id: 11,
quantity: 2,
price: 12.10,
total: 24.20,
productId: 1,
invoiceId: 8
},
{
id: 12,
quantity: 5,
price: 10.55,
total: 52.75,
productId: 2,
invoiceId: 8
}
]
};
I need a simple way to remove two attributes from the each item inside the 'itens' array, the properties are 'id' and 'invoiceId'. I also need to recalculate the 'total', coz I do not trust totally the source of the information, I rather multiply 'quantity' by 'price' myself.
I've produced this rather naive code:
myJson.itens.forEach(item => {
item.total =
item.quantity *
item.price;
delete item.id;
delete item.invoiceId;
});
And it works rather fine, however, no way that it must be it. Looks too lame and laborious to me. I'm exhausted googling for better ways of doing it.
Can it be done better?
Rather than mutating the original data, you could map it to a new object
const myJson = {"id":8,"active":true,"invoice":"2022/1001","invoiceDate":"2022-02-02","clientId":1,"storeId":1,"total":76.95,"itens":[{"id":11,"quantity":2,"price":12.1,"total":24.2,"productId":1,"invoiceId":8},{"id":12,"quantity":5,"price":10.55,"total":52.75,"productId":2,"invoiceId":8}]}
const newObject = {
...myJson, // keep the rest but map "itens"
itens: myJson.itens.map(({ id, invoiceId, ...iten }) => ({
...iten, // everything except "id" and "invoiceId"
total: iten.quantity * iten.price // recalc total
}))
}
console.log("newObject:", newObject)
.as-console-wrapper { max-height: 100% !important; }

Adding an incrementing number to each object in an array of objects with Javascript [closed]

Closed. This question needs to be more focused. It is not currently accepting answers.
Want to improve this question? Update the question so it focuses on one problem only by editing this post.
Closed 1 year ago.
This post was edited and submitted for review 1 year ago and failed to reopen the post:
Original close reason(s) were not resolved
Improve this question
Say I have an array of objects:
const myArray = [{ color: 'red' }, { color: 'blue'}, { color: 'yellow'}]
How can I expand the object to add a key value pair to each element where the key is number and the value is a number that increments by one in each object? My desired outcome is:
const myNewArray = [{ color: 'red', number: 1 }, { color: 'blue', number: 2 }, { color: 'yellow', number: 3 }]
const myNewArray = myArray.map((item, index) => { return {"number" :index, ...item} } )

How to join two separate arrays into one array? [closed]

Closed. This question needs to be more focused. It is not currently accepting answers.
Want to improve this question? Update the question so it focuses on one problem only by editing this post.
Closed 1 year ago.
Improve this question
I do have two different arrays namely,
["Laddoo", "Sweets", "Mixtures", "1FixBoxes", "Chips"]
[120, 185, 150, 145, 130]
I need to Join them as a single array like this.
data: [
{
name: 'Laddoo',
y: 120,
},
{
name: 'Sweets',
y: 185
},
{
name: 'Mixtures',
y: 150
},
{
name: '1FixBoxes',
y: 145
},
{
name: 'Chips',
y: 130
}
]
You can use Array.map()
const names = ["Laddoo", "Sweets", "Mixtures", "1FixBoxes", "Chips"];
const yValues = [120, 185, 150, 145, 130];
const transformedData = names.map((name, index) => ({name: name, y: yValues[index]}));
console.log(transformedData);
Call .map on either array and use the index to get the value of the other array.
nameArray.map((val, index) => { name: val, y: yArray[index] });

changing the structure of javascript object [closed]

Closed. This question needs to be more focused. It is not currently accepting answers.
Want to improve this question? Update the question so it focuses on one problem only by editing this post.
Closed 5 years ago.
Improve this question
My current object is of the form:
[{Vol:'AB', freq:[{used:4786, avail:1319, res:249}]}
,{Vol:'CD', freq:[{used:1101, avail:412, res:674}]}]
I need to change it to the form:
[{Vol:'AB', freq:{used:4786, avail:1319, res:249}}
,{Vol:'CD', freq:{used:1101, avail:412, res:674}}]
How can this be done.
Try
obj.map( s => (s.freq = s.freq[0], s) );
Explanation
Iterate the array using map
Replace each items freq's array with its first item
Demo
var input = [{
Vol: 'AB',
freq: [{
used: 4786,
avail: 1319,
res: 249
}]
}, {
Vol: 'CD',
freq: [{
used: 1101,
avail: 412,
res: 674
}]
}];
input = input.map(s => (s.freq = s.freq[0], s));
console.log(input);

Categories

Resources