Status
Not open for further replies.

Eliaquim

Hakuen Studio
Veteran
Joined
May 22, 2018
Messages
1,841
Reaction score
1,266
First Language
Portuguese - Br
Primarily Uses
RMMZ
Hi people!

Well, after I see a lot of things on the internet, I can't figure that out.
I see some examples with .some() and with .every() but I can't manage to put it in my code and it works.

In the code below, the variables a,b,c will get a random value between 0 and 3.
So, if any of them are equal( a = b || a = c || b= c), then the code will make a random value again for each one of the variables. If not, the loop will break and the code will proceed.

my code:
Code:
var a, b, c, habitat;

function SetHabitat() {
a = Math.floor(Math.random()*4);
b = Math.floor(Math.random()*4);
c = Math.floor(Math.random()*4);
return;
};


for (var habitat = [a, b, c];; SetHabitat()) {
if((a !== b) && (a !== c) && (c !== b)) {
habitat = [a, b, c];
break;
}
};

console.log(habitat);

How can I check if are any equal values inside an array?

I manage to do that. But only when I specify the arrays.
But, in case that will be a lot of arrays. How can I make it simple? Like putting in the "if(any arrays are equal == false)" { then i execute my code}

Thanks!
 

Jonforum

Veteran
Veteran
Joined
Mar 28, 2016
Messages
1,634
Reaction score
1,452
First Language
French
Primarily Uses
RMMV
PHP:
    var habitat = [];
    while(habitat.length < 3){ // while will break when you will get 3 unique random data in array
        const r = ~~(Math.random()*4);
        (habitat.indexOf(r) === -1) && habitat .push(r); // if not unique, add value
    }
 
Last edited:

Eliaquim

Hakuen Studio
Veteran
Joined
May 22, 2018
Messages
1,841
Reaction score
1,266
First Language
Portuguese - Br
Primarily Uses
RMMZ
PHP:
    var habitat = [];
    while(habitat.length < 3){ // while will break when you will get 3 unique random data in array
        const r = ~~(Math.random()*4)
        (habitat.indexOf(r) === -1) && habitat .push(r); // if not unique, add value
    }
Thanks!
But I cannot seem to understand, I think.
With your code, I can substitute all of mine, right? Or I have to find out where I can put it?

If I change the number in here, "habitat.length < 3", to 6 for example, this will generate more length to the array, right?

Also, it gets "r is not defined"
I try to define it with var or const but didn't work.
PcEvBbe.png

what is the goal for "~~"? :aswt:
 

Poryg

Dark Lord of the Castle of Javascreeps
Veteran
Joined
Mar 23, 2017
Messages
4,125
Reaction score
10,646
First Language
Czech
Primarily Uses
RMMV
~~ is substitute od Math.floor.

As for the r, he forgot a semicolon at the end of the line. In some JS interpreters they are important.
Also, if const doesn't work, try var.
Either way it looks like it should work.
 

Jonforum

Veteran
Veteran
Joined
Mar 28, 2016
Messages
1,634
Reaction score
1,452
First Language
French
Primarily Uses
RMMV

Jonforum

Veteran
Veteran
Joined
Mar 28, 2016
Messages
1,634
Reaction score
1,452
First Language
French
Primarily Uses
RMMV
i also recommend you create a function or method
PHP:
    /** Generate n random unic habitat */
    generateHabitat = function(max,range) {
        var buffer = [];
        while(buffer.length < max){ // while will break when you will get max unique random data in array
            var r = ~~(Math.random()*range); // range between 0=>range
            (buffer.indexOf(r) === -1) && buffer .push(r); 
        }
        return buffer;
    }



    var habitat = generateHabitat(6,30);
    console.log('habitat: ', habitat); // return a arrays with 6 random unic number range between 0=>30
 

Eliaquim

Hakuen Studio
Veteran
Joined
May 22, 2018
Messages
1,841
Reaction score
1,266
First Language
Portuguese - Br
Primarily Uses
RMMZ
i also recommend you create a function or method
PHP:
    /** Generate n random unic habitat */
    generateHabitat = function(max,range) {
        var buffer = [];
        while(buffer.length < max){ // while will break when you will get max unique random data in array
            var r = ~~(Math.random()*range); // range between 0=>range
            (buffer.indexOf(r) === -1) && buffer .push(r);
        }
        return buffer;
    }



    var habitat = generateHabitat(6,30);
    console.log('habitat: ', habitat); // return a arrays with 6 random unic number range between 0=>30

Hi!!
I tested and it works!
But took me a while to understand it ^^''
The only things that I have doubt are this line:
"(buffer.indexOf(r) === -1) && buffer .push(r);"

why, indexOf(r) is equal to -1? What does that mean?
buffer .push(r); > This is for add another object inside the array, right?
 

Jonforum

Veteran
Veteran
Joined
Mar 28, 2016
Messages
1,634
Reaction score
1,452
First Language
French
Primarily Uses
RMMV
yes , don't worry this forum it for learn.
indexOf return a index of the element founds in a arrays , but if found nothing, it return -1;
you could also write `buffer.indexOf(r) < 0` it will work.
so to translate this code line `(buffer.indexOf(r) === -1) && buffer .push(r);`
it like `check if r existe in buffer, if not? (index-1)...continue loop ,
if yes (index>-1) , add inside bufferArray r and continue loop`

more info here
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/indexOf
 

Eliaquim

Hakuen Studio
Veteran
Joined
May 22, 2018
Messages
1,841
Reaction score
1,266
First Language
Portuguese - Br
Primarily Uses
RMMZ
yes , don't worry this forum it for learn.
indexOf return a index of the element founds in a arrays , but if found nothing, it return -1;
you could also write `buffer.indexOf(r) < 0` it will work.
so to translate this code line `(buffer.indexOf(r) === -1) && buffer .push(r);`
it like `check if r existe in buffer, if not? (index-1)...continue loop ,
if yes (index>-1) , add inside bufferArray r and continue loop`

more info here
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/indexOf
OHHHH!!
I get it now "indexOf return a index of the element founds in a arrays , but if found nothing, it return -1;"
Thanks! I learn a lot from all this! ^^
 

mlogan

Global Moderators
Global Mod
Joined
Mar 18, 2012
Messages
15,783
Reaction score
8,758
First Language
English
Primarily Uses
RMMV

This thread is being closed, due to being solved. If for some reason you would like this thread re-opened, please report this post and leave a message why. Thank you.

 
Status
Not open for further replies.

Latest Threads

Latest Posts

Latest Profile Posts

I have an idea, I am making low polygon 3D resources for a package in itch. but it occurred to me that I could export these as images and make MV / MZ compatible tilesets. What do you think of this?
I hate seeing threads where less-experienced user's ask for an opinion of their project, and the thread is full of negative feedback by others who are clearly not the target audience. I feel bad for the OP, and I hope they understand that no game can appeal to everyone. :frown:
Hm, just found out I can't use loops, yay.
-Ele
I just wanna Covid to be over and I have my normal life back... Feeling so bad these days, what can I do?

Forum statistics

Threads
109,074
Messages
1,041,862
Members
141,570
Latest member
Pompeu
Top