Scripting HelpersARCHIVE
A little piece of Roblox history. Preserved for everyone, one question at a time.Read about the archive →
COMMUNITY QUESTION

Getting the total of children?

Using GetChildren() how do i get the total amount of children are their in the workspace?

1 answer

You can get the total number of direct children(e.g. doesn't count parts inside of parts) by using the # Operator. The # Operator gets the length of any given string or table. And since the GetChildren function returns a table, it will get the length, or how many children there are(:

Example;

local model = workspace.Model
local amount = #model:GetChildren()
print(amount) --> Will print the number of direct children

Note: This only gets the amount of direct children in your model. If you want to get every child inside the model you're going to have to use a method in lua called recursion. Recursion is essentially re-iterating a function upon itself. Like if you were to go;

function a()
	a()
end

This is recursion. But be wary when using recursion, as you can easily end up with a stack overflow. Stack overflow errors happen when you call a function inside itself too many times in a short amount of time with no yeild. The code above would give you a stack overflow error.

So, to use recursion to your advantage? You need to make a function that iterates through a model with the Pairs method in a generic for loop, adding 1 to a variable outside of the function each time it iterates. Then, you can recall the function on itself with each child;

local num = 0 --variable

function recurse(model) --function 'recurse'
	for i,v in pairs(model:GetChildren()) do --iterate through model
		num = num + 1 --add 1 to 'num' variable
		recurse(v) --recurse the 'recurse' function(:
	end
end

print(num)

Now, say you can't have that variable outside of the function because of the circumstances in your code.. we can fix this by having a local function inside of the main function. We can define the variable inside of the main function and use the local function for the recursive mechanics;

function GetNumChildren(model) --main function
	local num = 0 --variable
	local recurse = function(mod) --recursive function
		for i,v in pairs(mod:GetChildren()) do
			num = num + 1
			recurse(v)
		end
	end
	recurse(model) --call the recursive function
	return num --return the variable
end

print(GetNumChildren(workspace.Model))

Most of the time you won't see yourself needing to do the latter, but it's always useful to know different methods of doing things(:

Hope I helped!

This discussion is preserved as it was. New answers, comments, and votes are closed.