As of right now, my main problem is arrays. This is probably the 4th question I've asked about arrays, but problems keep on popping up. So first off, what I'm looking for is how to order arrays. As of right now my problem is it coming out of order. For example, this is the array:
local Random = { Another = { Blank1 = 1, Blank2 = 2, Blank3 = 3, Blank4 = 4, Blank5 = 5, }, }
Now, what I want to do is to put the values in a table from top to bottom, however this is not happening.
local values = {} for i, v in pairs(array) do table.insert(values, v) end return unpacked(values)
What this outputs is 3 2 1 4 5. How could I fix this first problem?
Next thing I want to do is check if something is a boolean. Pretty simple question.
pairs
returns entries in no particular order.
If you want to get things out in a particular order, you have to use a list, and you have to use ipairs
.
Right now, Random.Another
is not a list / array. It's a dictionary/hashmap -- you aren't using the numbers 1
, 2
, ... as the keys, you're using text as keys.
Instead,
local list = {2, 3, 5, 8, 13, 25} for i, v in ipairs(list) do print(v) end
Again, you can't use pairs
and expect a particular order.
If you use ipairs
, you'll get the same list -- since table.insert
adds to the end, and the last element you'll be adding will be the last.
To go in opposite order, say you want to insert at the front: table.insert(values, 1, v)
You can check if x
is a boolean by asking for it's type
:
if type(x) == "boolean" then
Or, you could just check if it's either true
or false
:
if x == true or x == false then -- x is a boolean
A "clever" way to do it is to check that not not x
is the same thing as x
:
if not not x == x then -- x is a boolean -- This is really unclear. While neat, don't do this.
You could use the sort function of the table library which automatically sorts your tables from least to greatest unless instructed otherwise. Here is an example of how it works, using your code.
local Random = { Another = { Blank1 = 1, Blank2 = 2, Blank3 = 3, Blank4 = 4, Blank5 = 5, }, } local values = {} -- new table for i, v in pairs(Random.Another) do table.insert(values, v) end print(unpack(values)) -- unsorted table.sort(values) -- call sort function print(unpack(values)) -- sorted
First off I'll address the boolean issue, as that's fairly easy. There's a type() method that will tell you what sort of thing something is by returning a string of what said thing is.
local myVariable = true if type(myVariable) == "boolean" then print("It's a boolean!") end
As for your array issue, what do you mean by ordering them "top to bottom"? Are you storing numerical values in each table in your array, and you want to order the tables in your array in terms of highest to lowest content value?