最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

js教程-数组循环删除错误实现与解决方案

来源:动视网 责编:小采 时间:2020-11-27 19:32:42
文档

js教程-数组循环删除错误实现与解决方案

js教程-数组循环删除错误实现与解决方案:问题描述简单的需求,要删除数组中不符合条件的元素。错误实现最初的实现,foreach循环,发现就是不对。// 如果学科存在id if (discipline.id) { // foreach类别 angular.forEach(result, function(value, key) { // 如果该类别
推荐度:
导读js教程-数组循环删除错误实现与解决方案:问题描述简单的需求,要删除数组中不符合条件的元素。错误实现最初的实现,foreach循环,发现就是不对。// 如果学科存在id if (discipline.id) { // foreach类别 angular.forEach(result, function(value, key) { // 如果该类别


问题描述

简单的需求,要删除数组中不符合条件的元素。

错误实现

最初的实现,foreach循环,发现就是不对。

// 如果学科存在id
if (discipline.id) {
 // foreach类别
 angular.forEach(result, function(value, key) {
 // 如果该类别有对应学科(考虑到“请选择的情况下”会报从undefined上获取id)
 // 并且该学科类别id不等于传入学科id
 if (value.discipline && !angular.equals(value.discipline.id, discipline.id)) {
 // 移除不符合要求的元素
 result.splice(key, 1);
 }
 });
}

每次删除时,都是根据key进行删除的,但是删除之后,数组的长度就会发生变化,导致下次再根据key去删除,发现长度变了,我们想删除的元素的位置也变了。

解决方案

Java中,我们使用iterator方法拿到其迭代对象,然后对其进行修改。

// 如果学科存在id
if (discipline.id) {
 /**
 * 数组过滤
 * 接收一个函数,根据该函数返回为true/false
 * 决定该元素保留还是删除
 */
 result = result.filter(function(value) {
 // 兼容请选择项,默认保留
 if (!value.discipline) {
 return true;
 }
 // 保留器具类别的学科id与当前学科id相同的项
 return angular.equals(value.discipline.id, discipline.id);
 });
}

相关文章:

JavaScript中关于for循环删除数组元素内容时出现的问题

一个关于数组循环的问题

文档

js教程-数组循环删除错误实现与解决方案

js教程-数组循环删除错误实现与解决方案:问题描述简单的需求,要删除数组中不符合条件的元素。错误实现最初的实现,foreach循环,发现就是不对。// 如果学科存在id if (discipline.id) { // foreach类别 angular.forEach(result, function(value, key) { // 如果该类别
推荐度:
标签: 删除 教程 js
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top