cocos creator实现数据的筛选

本文深入解析了一种数据筛选算法的实现原理与应用,通过参数设置,如数据源、回调函数及返回类型等,实现了对数据集的有效过滤。该算法支持不同数据结构的返回,包括数组和对象,并可通过回调函数灵活指定筛选条件。

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

原理

1、参数:筛选的数据、回调函数、{isObj : 返回的数据类型,target : 回调函数的作用域}
2、判断返回的数据类型
3、对数据进行遍历判断

实现

/**
 * 筛选数据
 * @param  {[type]} data 数据
 * @param  {Function} func 条件方法(传入value参数,若返回'_break'则只返回筛选到的第一个数据)
 * @param  {Object} _p {
 *     isObj: 是否按原Object数据结构返回,
 *     target: func作用域
 * }
 * @return {Array}      结果数组
 */
var filter = function(data,func,_p){
	var result;
	var p = _p||{};
	if(p.isObj){
		result = new Object();
	}else{
		result = new Array();
	}
	each(data,function(value,key){
		var cdb = func.call(p.target||this,value,key);
		if(cdb){
			if(p.isObj){
				result[key] = value;
			}else{
				result.push(value);
			}
			if(cdb == '_break'){
				result = value;
				return false;
			}
		}
	});
	return result;
}
### 下载并使用特定版本的 IPPICV 文件 为了在 Linux 上为 OpenCV 使用指定版本的 `ippicv` 文件(如 `ippicv_2022.0.0_lnx_intel64_20240904_general.tgz`),可以按照以下方法操作: #### 1. 手动下载 IPPICV 文件 手动获取所需的 IPPICV 压缩包文件。可以通过官方渠道或其他可信资源下载目标文件 `ippicv_2022.0.0_lnx_intel64_20240904_general.tgz`。 如果无法找到直接链接,可以从类似的开源项目或社区中查找对应的离线镜像地址[^3]。 --- #### 2. 修改 OpenCV 的配置文件 编辑 OpenCV 源码中的 `ippicv.cmake` 配置文件,禁用自动下载功能并将路径指向本地已下载IPPICV 文件。 具体步骤如下: - 进入 OpenCV 源码目录下的 `3rdparty/ippicv` 路径。 - 使用文本编辑器打开 `ippicv.cmake` 文件: ```bash gedit ~/opencv_source/opencv/3rdparty/ippicv/ippicv.cmake ``` - 替换默认的在线下载逻辑为本地路径设置。修改后的关键代码片段应类似于以下内容: ```cmake set(OPENCV_ICV_NAME "ippicv_2022.0.0_lnx_intel64_20240904_general.tgz") set(OPENCV_ICV_HASH "your_file_hash_here") # 设置本地路径作为 IPPICV 的源 set(IPPICV_LOCAL_PATH "/path/to/downloaded/ippicv_2022.0.0_lnx_intel64_20240904_general.tgz") if(EXISTS "${IPPICV_LOCAL_PATH}") message(STATUS "Using local IPPICV file: ${IPPICV_LOCAL_PATH}") configure_file("${IPPICV_LOCAL_PATH}" "${THE_ROOT}/${OPENCV_ICV_NAME}" COPYONLY) else() message(FATAL_ERROR "Local IPPICV file not found at: ${IPPICV_LOCAL_PATH}. Please download it manually.") endif() ``` 上述代码通过检测是否存在本地 IPPICV 文件来决定是否继续编译过程[^4]。 --- #### 3. 准备构建环境 确保已经准备好 OpenCV 和其他依赖项的源码以及必要的工具链。例如,在 Ubuntu 系统上安装基础依赖项: ```bash sudo apt update && sudo apt install build-essential cmake git pkg-config libgtk-3-dev \ libavcodec-dev libavformat-dev libswscale-dev libjpeg-dev libpng-dev libtiff-dev \ gfortran openexr libatlas-base-dev python3-dev python3-numpy libdc1394-22-dev ``` 将下载好的 IPPICV 文件放置到指定位置 `/path/to/downloaded/ippicv_2022.0.0_lnx_intel64_20240904_general.tgz` 并验证其完整性。 --- #### 4. 编译 OpenCV 创建一个新的构建目录并运行 CMake 来生成 Makefile 或 Ninja 构建脚本: ```bash mkdir -p ~/opencv_build && cd ~/opencv_build cmake -D CMAKE_BUILD_TYPE=RELEASE \ -D CMAKE_INSTALL_PREFIX=/usr/local \ -D OPENCV_EXTRA_MODULES_PATH=~/opencv_contrib/modules \ -D WITH_CUDA=ON \ -D ENABLE_PRECOMPILED_HEADERS=OFF \ ../opencv/ ``` 完成配置后执行实际编译命令: ```bash make -j$(nproc) sudo make install ``` 此过程中会跳过 IPPICV 自动下载阶段而改用预定义的本地文件[^2]。 --- ### 注意事项 - 如果遇到哈希校验错误,请确认所使用的 IPPICV 文件与其预期的 SHA256 校验值匹配。 - 对于不同版本的 OpenCVIPPICV 组件组合,可能需要调整兼容性参数以满足需求。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值