- 浏览: 131255 次
- 性别:
- 来自: 北京
-
文章分类
最新评论
-
lliiqiang:
NetConnection.Connect.Rejected拒 ...
第一个FMS程序,连接到FMS服务器(Flash/Flex两种实现) 转
要找出指定值得数组元素
解决办法
用for 语句和break 语句就能找到匹配的元素。另外用ArrayUtilities.findMatchIndex( ),ArrayUtilities.findLastMatchIndex( ), 和ArrayUtilities.findMatchIndices( ) 方法
讨论
用for循环查找第一个匹配的元素后,用break立即返回,这样就实现功能了。
break应该在if语句里进行判断,是否找到匹配元素,找到则执行break推出循环,否则继续查找。
var letters:Array = ["a", "b", "c", "d", "a", "b", "c", "d"];
// 指定要搜索的内容
var match:String = "b";
for (var i:int = 0; i < letters.length; i++) {
// 检测当前元素是否匹配
if (letters[i] == match) {
trace("Element with index " + i +
" found to match " + match);
break;
}
}
// 指定要搜索的内容
var match:String = "b";
for (var i:int = 0; i < letters.length; i++) {
// 检测当前元素是否匹配
if (letters[i] == match) {
trace("Element with index " + i +
" found to match " + match);
break;
}
}
也可以找到匹配的最后一个元素,这就需要倒序遍历数组:
var letters:Array = ["a", "b", "c", "d", "a", "b", "c", "d"];
var match:String = "b";
for (var i:int = letters.length - 1; i >= 0; i--) {
if (letters[i] == match) {
trace("Element with index " + i +
" found to match " + match);
break;
}
}
var match:String = "b";
for (var i:int = letters.length - 1; i >= 0; i--) {
if (letters[i] == match) {
trace("Element with index " + i +
" found to match " + match);
break;
}
}
使用自定义类ArrayUtilities 类更简单,它在ascb.util 包中,首先导入它:
import ascb.util.ArrayUtilities;
ArrayUtilities 类有三个方法来查找匹配的元素findMatchIndex( ), findLastMatchIndex( ), 和findMatchIndices( )。findMatchIndex( ) 方法至少需要两个参数:一个指向数组的引用和需要匹配的值,返回第一个匹配的元素下标,如果找不到返回-1:
var letters:Array = ["a", "b", "c", "d"];
trace(ArrayUtilities.findMatchIndex(letters, "b"));
// 显示: 1
trace(ArrayUtilities.findMatchIndex(letters, "r"));
// 显示: -1
trace(ArrayUtilities.findMatchIndex(letters, "b"));
// 显示: 1
trace(ArrayUtilities.findMatchIndex(letters, "r"));
// 显示: -1
也可以指定搜索的起始下标作为第三个参数:
var letters:Array = ["a", "b", "c", "d", "a", "b", "c", "d"];
trace(ArrayUtilities.findMatchIndex(letters, "a", 1));
// 显示: 4
trace(ArrayUtilities.findMatchIndex(letters, "a", 1));
// 显示: 4
如果第三个参数为true,则返回部分匹配的元素:
var words:Array = ["bicycle", "baseball", "mat", "board"];
trace(ArrayUtilities.findMatchIndex(words, "s", true));
// 显示: 1
trace(ArrayUtilities.findMatchIndex(words, "s", true));
// 显示: 1
如果你想部分匹配又想指定起始搜索下标,可以把起始下标作为第四个参数。
findLastMatchIndex( ) 方法返回最后一个匹配的元素下标
findMatchIndices( ) 方法返回所有匹配的元素下标数组:
var letters:Array = ["a", "b", "c", "d", "a", "b", "c", "d"];
trace(ArrayUtilities.findMatchIndices(letters, "b"));
// 显示: 1,5
trace(ArrayUtilities.findMatchIndices(letters, "b"));
// 显示: 1,5
也可以设定为部分匹配,指定第三个参数为true:
var words:Array = ["bicycle", "baseball", "mat", "board"];
trace(ArrayUtilities.findMatchIndices(words, "b", true));
// 显示: 0,1,3
trace(ArrayUtilities.findMatchIndices(words, "b", true));
// 显示: 0,1,3
ArrayUtilities 方法内部也是用for循环来实现的,现在我们看看代码,下面是findMatchIndex( )方法的代码:
public static function findMatchIndex(array:Array, element:Object):int {
// Use a variable to determine the index
// from which to start. Use a default value of 0.
var startingIndex:int = 0;
// By default don't allow a partial match.
var partialMatch:Boolean = false;
// If the third parameter is a number,
// assign it to nStartingIndex.
// Otherwise, if the fourth parameter is a number,
// assign it to nStartingIndex instead.
if(typeof arguments[2] == "number") {
startingIndex = arguments[2];
}
else if(typeof arguments[3] == "number") {
startingIndex = arguments[3];
}
// If the third parameter is a Boolean value,
// assign it to partialMatch.
if(typeof arguments[2] == "boolean") {
partialMatch = arguments[2];
}
// Assume no match is found.
var match:Boolean = false;
// Loop through each of the elements of the array
// starting at the specified starting index.
for(var i:int = startingIndex;
i < array.length; i++) {
// Check to see if the element either matches
// or partially matches.
if(partialMatch) {
match = (array[i].indexOf(element) != -1);
}
else {
match = (array[i] == element);
}
// If the element matches, return the index.
if(match) {
return i;
}
}
// The following return statement is only reached
// if no match was found. In that case, return -1.
return -1;
}
public static function findMatchIndices(array:Array,
element:Object, partialMatch:Boolean = false):Array {
var indices:Array = new Array( );
var index:int = findMatchIndex(array,
element,
partialMatch);
while(index != -1) {
indices.push(index);
index = findMatchIndex(array,
element,
partialMatch,
index + 1);
}
return indices;
}
// Use a variable to determine the index
// from which to start. Use a default value of 0.
var startingIndex:int = 0;
// By default don't allow a partial match.
var partialMatch:Boolean = false;
// If the third parameter is a number,
// assign it to nStartingIndex.
// Otherwise, if the fourth parameter is a number,
// assign it to nStartingIndex instead.
if(typeof arguments[2] == "number") {
startingIndex = arguments[2];
}
else if(typeof arguments[3] == "number") {
startingIndex = arguments[3];
}
// If the third parameter is a Boolean value,
// assign it to partialMatch.
if(typeof arguments[2] == "boolean") {
partialMatch = arguments[2];
}
// Assume no match is found.
var match:Boolean = false;
// Loop through each of the elements of the array
// starting at the specified starting index.
for(var i:int = startingIndex;
i < array.length; i++) {
// Check to see if the element either matches
// or partially matches.
if(partialMatch) {
match = (array[i].indexOf(element) != -1);
}
else {
match = (array[i] == element);
}
// If the element matches, return the index.
if(match) {
return i;
}
}
// The following return statement is only reached
// if no match was found. In that case, return -1.
return -1;
}
public static function findMatchIndices(array:Array,
element:Object, partialMatch:Boolean = false):Array {
var indices:Array = new Array( );
var index:int = findMatchIndex(array,
element,
partialMatch);
while(index != -1) {
indices.push(index);
index = findMatchIndex(array,
element,
partialMatch,
index + 1);
}
return indices;
}
发表评论
-
Flex 对Java端返回Collection的处理方法
2010-07-20 22:21 1087将Flex与Spring集成后(BlazeDS 与Spring ... -
在文本框里添加超链接
2010-05-31 10:16 2217问题我想在文本框里加入超链接解决办法利用HTML <a ... -
BulkLoader类和PV3D
2010-05-31 10:06 918AS3取消了movieclip的loader类,所以加载图 ... -
Flex LinkButton仿IE超链接
2010-05-31 10:02 3002重写的LinkButton类Kelvin_LinkButt ... -
flex RSL做资源共享管理
2010-05-18 10:35 1086Flex SDK 里有一个运行时组件共享库——RSL ( Ru ... -
很不错的flex果冻特效 转
2010-05-13 10:36 1849index.mxml <?xml version ... -
Flex 特效一部分 转
2010-05-12 14:24 15001:glow(发光) 代码: <mx:Glow id ... -
Flex3特效的基本用法 原理 转
2010-05-12 11:40 1294Flex3为开发人员提供了多种基本的特效控件,每种特效控件对应 ... -
Flex3特效的基本用法 特效组件 转
2010-05-12 11:34 1345Flex3中预定义了多种特效组件,每种组件对应于一种或多种特效 ... -
FLEX3中应用CSS完全详解手册! 转
2010-05-11 16:44 875在FLEX中使用样式方法一、使用本地样式定义使用<mx: ... -
Flex加载图片的常用的几种方式 转
2010-05-11 15:17 792<?xml version="1.0&qu ... -
flex特效 触发器
2010-04-30 16:00 1183触发器在Flex3的特效实现中起着重要作用,对于Flex3中的 ... -
数据筛选(转)
2010-04-15 17:16 769<?xml version="1.0" ... -
在数组首部和尾部添加元素(转)
2010-04-15 17:01 3235要再添加新元素到数组解决办法push( ) 方法在数组尾部添加 ... -
遍历数组成员(转)
2010-04-15 17:00 876要访问数组的每个元素 ... -
.删除数组元素(转)
2010-04-15 16:56 1441要删除一个或多个数组元素,或移动数组元素解决办法splice( ... -
在数组中间插入元素(转)
2010-04-15 16:53 2190要在数组中间插入元素解决办法使用splice( ) 方法讨论s ... -
读取关联数组(转)
2010-04-15 16:50 856怎样遍历关联数组解决办法使用for . . . in 语句讨论 ... -
创建关联数组(转)
2010-04-15 16:48 955要创建用名称元素作为索引的数组解决办法创建关联数组讨论用关联数 ... -
比较数组(转)
2010-04-15 16:45 931怎么判断两个数组是否相等呢解决办法循环数组,一一比较对应位置的 ...
相关推荐
数组元素查询是常见的操作,它涉及检查一个特定的值是否存在于数组内,并基于查询结果返回相关信息。本篇文章将详细探讨数组、数组元素查询及其在实际编程中的应用。 首先,让我们了解什么是数组。数组是由相同类型...
这个函数接受一个整型数组`arr`、目标值`target`和数组大小`size`作为参数,然后通过for循环逐个检查数组元素。如果找到匹配的目标值,就返回对应的索引;否则,返回-1表示未找到。 当然,还有更高效的方法,如二分...
本学习笔记将深入探讨如何在LabVIEW中实现对二维数组的搜索匹配,特别是针对字符串类型的二维数组。由于LabVIEW内建的函数库并未直接提供搜索二维数组的功能,我们需要自定义方法来解决这个问题。 首先,我们需要...
byte数组中匹配特定byte数组,速度比Skip(k).Take(find.Length).SequenceEqual(find)快很多,小于3ms
总而言之,JavaScript按值删除数组元素的方法主要依赖于数组和字符串的相互转换,利用正则表达式强大的模式匹配和替换功能来实现。通过编写这样的函数,我们可以灵活地处理数组中的数据,满足各种不同的编程需求。...
2. **数组元素的访问**:易语言中,我们可以通过索引来访问数组中的元素,如`数组名[索引]`。例如,获取数组的第一个元素,可以写成`取数组元素 数组名, 0`。 3. **数值查找的基本思路**:在数组中查找特定数值,...
例如,如果数组中包含了某个特定值的元素,可能需要根据这个值来移除对应的数组元素。本文将介绍如何在PHP中根据指定的元素值去除数组中的元素,这个操作通常用于数组的过滤和清理工作中。 首先,要实现根据元素值...
在给定的“链表匹配算法,检测两个数组最优匹配”的标题中,我们可以理解为我们需要找到两个数组元素之间的一种最佳匹配方式。数组是线性数据结构,而链表则是另一种线性数据结构,但它的元素不需要连续的内存空间。...
"Java 递归线性搜索数组中的元素" Java 是一种功能强大、可靠性高、跨平台的编程语言,适用于各种应用场景。在大数据处理、云计算、企业级应用开发、移动应用开发等领域,Java 都扮演着重要角色。学习和掌握 Java ...
- 查找数组元素,通常可以使用线性搜索或二分搜索(对已排序数组)。 5. **Arrays工具类** - Java提供了一个`Arrays`类,其中包含多种操作数组的方法,如`sort()`、`equals()`、`fill()`和`deepEquals()`等,方便...
在C#编程语言中,`foreach`语句是一种...总的来说,C#中的`foreach`语句是搜索数组元素的一种简单而直观的方法,尤其适合于教学和小型项目。在实际开发中,根据性能需求和场景选择合适的数据结构和算法是至关重要的。
例如,在搜索引擎中,可以使用后缀数组对查询进行快速预处理,再结合字典树实现高效的关键词匹配;在大数据分析中,树状数组可以用来实时统计不同关键字的出现频率;而在基因序列比对中,多串匹配算法则帮助我们快速...
对于数组,查找通常意味着遍历数组元素,直到找到与目标匹配的元素为止。如果找到,则返回该元素的索引;如果没有找到,则返回一个特定值(通常为-1),表示元素不在数组中。 #### 二、Java中的线性查找实现 在...
用于搜索数组中元素的 Java 程序 本文将详细介绍如何使用 Java 语言编写一个程序来检查数组中是否存在特定元素。该程序将使用多种方法来实现这一目标,包括线性搜索、二分查找、List.contains() 方法和 Stream....
了解并掌握如何在C#中有效地查找数组元素,对于编程实践具有重要意义。无论是简单的线性搜索还是利用更高级的数据结构,都需要对C#的基本语法和数据结构有深入的理解。 通过学习这个主题,你可以进一步扩展到更复杂...
- 正则表达式匹配数组元素时,要确保正则表达式正确无误,否则可能无法正确提取数据或者导致性能问题。 - 在处理外部数据时,应当考虑到数据的安全性,避免注入攻击等安全威胁。 总结来说,通过结合`file_get_...
总结来说,`findIndex()`是JavaScript中查找数组元素的一个强大工具,尤其适用于需要根据特定条件查找元素的情况。通过灵活运用回调函数和与其他数组方法的组合,我们可以处理各种复杂的查找需求。在实际编程中,...
5. 定义了`int`型二维数组`a[6][7]`后,`a[3][4]`前的数组元素个数为_A_,因为是6行7列,所以前3行4列是24个元素。 6. 正确的初始化字符数组的语句是_B_,因为A和C选项长度不匹配,D选项没有终止符。 7. 数组在...
通过索引访问数组元素,如`$array[0]`,将返回'apple'。如果索引不存在,PHP会返回`NULL`。 3. 数组长度 使用`count()`函数获取数组的元素数量: ```php $count = count($array); ``` 4. 遍历数组 可以用`foreach`...
其中,`DataType`是数组元素的数据类型,如`int`、`string`等,`arrayName`是数组的名称,`Size`是数组的元素个数。 数组有多个属性可以用来获取其特性,如: - `IsFixedSize`: 如果数组长度在创建后不能改变,则...