Whatever message this page gives is out now! Go check it out!
ListFind(list, value [, delimiters, includeEmptyFields ])Parameter | Description |
includeEmptyFields | Optional. Set to yes to include empty values. |
list | A list or a variable that contains one |
value | A string, a number, or a variable that contains one. Item for which to search. The search is case sensitive. |
delimiters | A string or a variable that contains one. Characters that separate list elements. The default value is comma . If this parameter contains more than one character, ColdFusion processes each occurrence of each character as a delimiter. |
<cfscript>
myList="Tokyo,Bangkok,bangkok,bangKok,Jakarta,Manila,Bangalore,Shanghai";
myFind=ListFind(myList,"bangkok");
WriteOutput(myFind); // Returns 3
</cfscript><cfscript>
// Simple Permission Checking with ListFind
// Business: Verify user access rights for secure applications
// Sample users with different permission levels
users = [
{"username": "admin.user", "role": "Administrator", "permissions": "ADMIN,USER_MGMT,REPORTS,PAYROLL"},
{"username": "hr.manager", "role": "HR Manager", "permissions": "HR_MGMT,REPORTS,USER_VIEW"},
{"username": "employee", "role": "Employee", "permissions": "PROFILE_EDIT,TIMESHEET"}
];
// Simple permission checker
function hasPermission(userPermissions, requiredPermission) {
return ListFind(userPermissions, requiredPermission) > 0;
}
</cfscript>
<cfoutput>
<h1>🔐 ListFind: Permission Checking Demo</h1>
<p><strong>Business Need:</strong> Control access to application features based on user permissions</p>
<p><strong>Challenge:</strong> Users have different permission combinations stored as comma-separated lists</p>
<p><strong>Solution:</strong> Use ListFind() to verify if specific permissions exist in user's list</p>
<hr>
<h2>Permission Testing Examples</h2>
</cfoutput>
<cfloop array="#users#" index="userData">
<cfoutput>
<h3>#userData["username"]# - #userData["role"]#</h3>
<div style="background: ##f8f9fa; padding: 15px; margin: 10px 0; border: 1px solid ##ddd;">
<p><strong>User Permissions:</strong> #userData["permissions"]#</p>
<div style="display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 10px;">
</cfoutput>
<cfscript>
// Test common permissions
testPermissions = ["ADMIN", "REPORTS", "USER_MGMT", "TIMESHEET"];
</cfscript>
<cfloop array="#testPermissions#" index="permission">
<cfscript>
hasAccess = hasPermission(userData["permissions"], permission);
position = ListFind(userData["permissions"], permission);
</cfscript>
<cfoutput>
<div style="background: #hasAccess ? '##d4edda' : '##f8d7da'#; padding: 10px; border-radius: 5px; text-align: center;">
<h5 style="margin-top: 0;">#permission#</h5>
<p><strong>Access:</strong> #hasAccess ? 'GRANTED ✅' : 'DENIED ❌'#</p>
<cfif hasAccess>
<p><strong>Position:</strong> #position#</p>
</cfif>
</div>
</cfoutput>
</cfloop>
<cfoutput>
</div>
</div>
</cfoutput>
</cfloop><cfscript>
// Simple Product Category Filtering with ListFind
// Business: Filter e-commerce products by category membership
// Sample products with category lists
products = [
{"name": "Gaming Laptop", "categories": "electronics,computers,gaming", "price": 1299.99},
{"name": "Wireless Headset", "categories": "electronics,audio,gaming", "price": 149.99},
{"name": "Office Monitor", "categories": "electronics,monitors,business", "price": 329.99},
{"name": "Smartphone", "categories": "electronics,mobile,communication", "price": 899.99}
];
// Simple category filter function
function filterByCategory(productList, targetCategory) {
var matchedProducts = [];
for (productData in productList) {
if (ListFind(productData["categories"], targetCategory) > 0) {
arrayAppend(matchedProducts, productData);
}
}
return matchedProducts;
}
</cfscript>
<cfoutput>
<h1>🛒 ListFind: Product Category Demo</h1>
<p><strong>Business Need:</strong> Filter products by category for better customer experience</p>
<p><strong>Challenge:</strong> Products belong to multiple categories simultaneously</p>
<p><strong>Solution:</strong> Use ListFind() to check if products belong to specific categories</p>
<hr>
<h2>All Products</h2>
<div style="display: grid; grid-template-columns: repeat(auto-fit, minmax(250px, 1fr)); gap: 15px;">
</cfoutput>
<cfloop array="#products#" index="productData">
<cfoutput>
<div style="background: ##f8f9fa; padding: 15px; border: 1px solid ##ddd; border-radius: 5px;">
<h4 style="margin-top: 0;">#productData["name"]#</h4>
<p><strong>Price:</strong> $#numberFormat(productData["price"], "0.00")#</p>
<p><strong>Categories:</strong> #productData["categories"]#</p>
</div>
</cfoutput>
</cfloop>
<cfoutput>
</div>
<h2>Category Filter Examples</h2>
</cfoutput>
<cfscript>
// Test different category filters
categoryTests = ["gaming", "electronics", "business", "audio"];
</cfscript>
<cfloop array="#categoryTests#" index="category">
<cfscript>
filteredProducts = filterByCategory(products, category);
</cfscript>
<cfoutput>
<h3>Filter: "#category#" Category</h3>
<div style="background: ##e3f2fd; padding: 15px; border-radius: 5px; margin: 10px 0;">
<p><strong>Products Found:</strong> #arrayLen(filteredProducts)# out of #arrayLen(products)#</p>
<cfif arrayLen(filteredProducts) > 0>
<h4>Matching Products:</h4>
<cfloop array="#filteredProducts#" index="product">
<div style="background: ##e8f5e8; padding: 10px; margin: 10px 0; border-radius: 5px;">
<strong>#product["name"]#</strong> - $#numberFormat(product["price"], "0.00")#<br>
<em>Categories: #product["categories"]#</em><br>
<strong>Position in list:</strong> #ListFind(product["categories"], category)#
</div>
</cfloop>
<cfelse>
<p style="color: ##666; font-style: italic;">No products found in this category.</p>
</cfif>
</div>
</cfoutput>
</cfloop><cfscript>
// Simple Email List Management with ListFind
// Business: Target email campaigns to specific subscriber segments
// Sample subscribers with interest lists
subscribers = [
{"name": "Alex Developer", "email": "alex@tech.com", "lists": "technology,tutorials,development"},
{"name": "Sarah Business", "email": "sarah@corp.com", "lists": "business,newsletters,leadership"},
{"name": "Mike Designer", "email": "mike@creative.com", "lists": "design,tutorials,inspiration"},
{"name": "Lisa Analyst", "email": "lisa@data.com", "lists": "technology,business,data_science"}
];
// Simple campaign targeting function
function getTargetAudience(subscriberList, targetList) {
var targetedSubscribers = [];
for (subscriberData in subscriberList) {
if (ListFind(subscriberData["lists"], targetList) > 0) {
arrayAppend(targetedSubscribers, subscriberData);
}
}
return targetedSubscribers;
}
</cfscript>
<cfoutput>
<h1>📧 ListFind: Email Campaign Demo</h1>
<p><strong>Business Need:</strong> Send targeted emails to specific subscriber segments</p>
<p><strong>Challenge:</strong> Subscribers belong to multiple interest lists</p>
<p><strong>Solution:</strong> Use ListFind() to target campaigns to specific list members</p>
<hr>
<h2>All Subscribers</h2>
<div style="display: grid; grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); gap: 15px;">
</cfoutput>
<cfloop array="#subscribers#" index="subscriberData">
<cfoutput>
<div style="background: ##f8f9fa; padding: 15px; border: 1px solid ##ddd; border-radius: 5px;">
<h4 style="margin-top: 0;">#subscriberData["name"]#</h4>
<p><strong>Email:</strong> #subscriberData["email"]#</p>
<p><strong>Lists:</strong> #subscriberData["lists"]#</p>
</div>
</cfoutput>
</cfloop>
<cfoutput>
</div>
<h2>Campaign Targeting Examples</h2>
</cfoutput>
<cfscript>
// Test different campaign targets
campaignTargets = [
{"list": "technology", "type": "Tech Newsletter"},
{"list": "business", "type": "Business Insights"},
{"list": "tutorials", "type": "Learning Resources"},
{"list": "design", "type": "Creative Inspiration"}
];
</cfscript>
<cfloop array="#campaignTargets#" index="campaign">
<cfscript>
targetedList = getTargetAudience(subscribers, campaign.list);
coveragePercent = (arrayLen(targetedList) / arrayLen(subscribers)) * 100;
</cfscript>
<cfoutput>
<h3>Campaign: #campaign.type# (Target: "#campaign.list#")</h3>
<div style="background: ##fff3cd; padding: 15px; border-radius: 5px; margin: 10px 0;">
<p><strong>Subscribers Targeted:</strong> #arrayLen(targetedList)# out of #arrayLen(subscribers)# (#numberFormat(coveragePercent, "0.0")#% coverage)</p>
<cfif arrayLen(targetedList) > 0>
<h4>Campaign Recipients:</h4>
<cfloop array="#targetedList#" index="recipient">
<cfscript>
position = ListFind(recipient["lists"], campaign.list);
</cfscript>
<div style="background: ##e8f5e8; padding: 10px; margin: 5px 0; border-radius: 5px;">
<strong>#recipient["name"]#</strong> (#recipient["email"]#)<br>
<em>All Lists: #recipient["lists"]#</em><br>
<strong>"#campaign.list#" Position:</strong> #position#
</div>
</cfloop>
<cfelse>
<p style="color: ##666; font-style: italic;">No subscribers found for this campaign.</p>
</cfif>
</div>
</cfoutput>
</cfloop><cfscript>
// Simple Inventory Location Management with ListFind
// Business: Find products across multiple warehouse locations
// Sample inventory with location lists
inventory = [
{"product": "Blood Pressure Monitor", "locations": "WH001,WH003,WH007", "units": 150},
{"product": "Digital Thermometer", "locations": "WH002,WH005,WH009", "units": 200},
{"product": "Hand Sanitizer", "locations": "WH001,WH004,WH006", "units": 300},
{"product": "Face Masks", "locations": "WH003,WH007,WH008", "units": 500}
];
// Warehouse information
warehouses = {
"WH001": "Main Distribution - New York",
"WH002": "West Coast Hub - Los Angeles",
"WH003": "Midwest Center - Chicago",
"WH004": "Southeast Hub - Atlanta",
"WH005": "Northwest Center - Seattle"
};
// Simple inventory finder
function findProductsAtWarehouse(inventoryList, warehouseCode) {
var productsFound = [];
for (inventoryItem in inventoryList) {
if (ListFind(inventoryItem["locations"], warehouseCode) > 0) {
arrayAppend(productsFound, inventoryItem);
}
}
return productsFound;
}
</cfscript>
<cfoutput>
<h1>🏭 ListFind: Inventory Location Demo</h1>
<p><strong>Business Need:</strong> Find which products are available at specific warehouses</p>
<p><strong>Challenge:</strong> Products are stored across multiple warehouse locations</p>
<p><strong>Solution:</strong> Use ListFind() to check product availability by location</p>
<hr>
<h2>Complete Inventory</h2>
<div style="display: grid; grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); gap: 15px;">
</cfoutput>
<cfloop array="#inventory#" index="inventoryItem">
<cfoutput>
<div style="background: ##f8f9fa; padding: 15px; border: 1px solid ##ddd; border-radius: 5px;">
<h4 style="margin-top: 0;">#inventoryItem["product"]#</h4>
<p><strong>Units Available:</strong> #numberFormat(inventoryItem["units"], "0,0")#</p>
<p><strong>Locations:</strong> #inventoryItem["locations"]#</p>
</div>
</cfoutput>
</cfloop>
<cfoutput>
</div>
<h2>Warehouse Inventory Lookup</h2>
</cfoutput>
<cfscript>
// Test different warehouse locations
warehouseTests = ["WH001", "WH003", "WH005", "WH999"];
</cfscript>
<cfloop array="#warehouseTests#" index="warehouseCode">
<cfscript>
productsAtLocation = findProductsAtWarehouse(inventory, warehouseCode);
warehouseName = structKeyExists(warehouses, warehouseCode) ? warehouses[warehouseCode] : "Unknown Warehouse";
</cfscript>
<cfoutput>
<h3>Warehouse: #warehouseCode# - #warehouseName#</h3>
<div style="background: ##f0f8ff; padding: 15px; border-radius: 5px; margin: 10px 0;">
<p><strong>Products Available:</strong> #arrayLen(productsAtLocation)# products</p>
<cfif arrayLen(productsAtLocation) > 0>
<h4>Available Products:</h4>
<cfloop array="#productsAtLocation#" index="product">
<cfscript>
position = ListFind(product["locations"], warehouseCode);
</cfscript>
<div style="background: ##e8f5e8; padding: 10px; margin: 10px 0; border-radius: 5px;">
<strong>#product["product"]#</strong><br>
<strong>Units:</strong> #numberFormat(product["units"], "0,0")#<br>
<em>All Locations: #product["locations"]#</em><br>
<strong>Position in Location List:</strong> #position#
</div>
</cfloop>
<cfelse>
<p style="color: ##666; font-style: italic;">No products available at this warehouse.</p>
</cfif>
</div>
</cfoutput>
</cfloop>