RMMZ [Javascript] Shifting only select elements of array?

ct_bolt

Creator
Veteran
Joined
May 3, 2012
Messages
954
Reaction score
517
First Language
Javascript
Primarily Uses
RMMZ
Another one for ya guys... kind of has me stumped...

Shifting only select elements of array while keeping the rest of the array as is though.

Example:
Code:
const a = ["A", 4, "B", "C", "D", 1, 2, 3];
How would I shift only the numbers while keeping the rest of the array as is.

So the first shift should end up like this:
Code:
["A", 3, "B", "C", "D", 4, 1, 2]
Second shift like this:
Code:
["A", 2, "B", "C", "D", 3, 4, 1]
Thanks again for any/all help advice. :cutesmile:
 

Nolonar

Veteran
Veteran
Joined
Feb 18, 2018
Messages
160
Reaction score
232
First Language
French, German
Primarily Uses
RMMZ
You can do this:
Code:
a = a.map(element => typeof element === "number" ? shift(element) : element);
This will give you a new array where only numbers have been shifted.
As for the shift method, you probably want this:
Code:
const shift = n => n - 1 || 4;
Obviously, n has to be greater than 0, otherwise you'll get negative numbers.

For more control you can also define shift this way:
Code:
const shift = (n, max) => n - 1 || max;
 

 Masked 

Assistant
Veteran
Joined
Oct 28, 2015
Messages
90
Reaction score
258
First Language
Portuguese
Primarily Uses
RMMZ
I think you'll need to give a bit more detail on the logic of what you're trying to achieve with this one, from what you've said the only thing it can think of is swapping the elements on the array, like this:

JavaScript:
const a = [1, "a", 3, "b", "c", 4];

let aux = a[2];
a[2] = a[5];
a[5] = aux;
Aside from that, is there any particular reason to have strings and numbers mixed on the same array? It's usually not very good to have elements that behave differently on a collection. If you can split this into two arrays, one for strings and another for integers, then it's a lot easier to do (just pop and unshift).
 

Users Who Are Viewing This Thread (Users: 0, Guests: 1)

Latest Threads

Latest Posts

Latest Profile Posts

"They yearn for what they fear for."
I always told my DA fans how much I hate slot machines. They're fine in games as a risk-and-reward system. But when you're spending REAL MONEY in a Vegas casino to try and hit the jackpot (which very, very few people will), it can really hurt your budget. Gambling is a bad habit, and I don't like wasting my money on a slim chance. Go to Vegas for the experience, not the jackpot.
Took the kids to a corn maze. They gave us a map and had lights at certain points in the maze. Not overwhelming... or underwhelming... just... whelming.
Okay, vacuuming fruit flies out of the air is surprisingly effective.
Finally finished my menu redesign after like a month of coding! I hate designing menus... Good news though - I thought of a complete redesign for it now, so yay...

Forum statistics

Threads
104,391
Messages
1,006,050
Members
135,922
Latest member
Willianzitor
Top