array的indexOf

本文详细介绍了在Grid设计中优化数组搜索功能的过程,包括实现一个类似原生indexOf的函数,以支持快速查找和取消选中行的操作。通过实例演示了如何使用此自定义函数来判断行是否被选中,并提供了具体的代码实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

整理了一些设计Grid时候依赖产生的api思考,开始发布

 

需求是这样的:

 

1.设计前我定义了选中行的属性selectedRows是一个[],用来存放所有选中行的index信息,方便后面的选中和取消选中等相关操作。

 

2.现在你设计选中行和取消选中行的时候,你一定会判断当前的rowIndex是否在这个数组selectedRows里面,但是我们知道没有原生的api去支持这个arrray.indexOf.

 

先看看tangram的做法吧

 

 

/*
首先说明一下本人做了一下小修改,去掉了一个变量的定义。因为没有引用的地方。
*indexOf-search the index of the element in a array*
*@function*
*@param {Array} source---the array*
*@param element---the element*
*@param {number} fromIndex---the start index for search
*@remark(_ps:if fromIndex <0 will set it to source.length+fromIndex)*
*@return {number} if not find will return -1 just like js-lib*
*/
ZYC.array.indexOf = function(source,element,fromIndex){
      var _lenth = source.length,  //源数组对象的length
	      //iterator = element;
	  fromIndex = fromIndex || 0;     //给一个默认值,这个做法我个人一直遵循
	  if(fromIndex < 0){              
	     //if < 0  支持负值方向查询
		 fromIndex = Math.max(0,_lenth + fromIndex);
	  }
	  for(;fromIndex<_lenth;fromIndex++){
		    if(fromIndex in source && source[fromIndex] === element){
			   return fromIndex;
			}
	  }
	  return -1;
};

//在自己开始设计的时候并没有想到像tangram一样支持index似的的查找
//而且比较好的是支持类似于string.slice()这样的原生api的负值反向查找的功能 

 

通过上述的indexOf,我上面的需求也已经完成了

 

简单举例:

 

 

var selectedRows = [0,1,2];

//在设计getSelected的时候
//判断是否选中
//rowIndex是当前的行序号
//isSelected是当前行是否被选中
//g是grid对象或者api内部的this
var isSelected = (ZYC.array.indexOf(g.selectedRows,rowIndex) != -1);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值