如何从数组中删除一个特定值? 类似 :
array.remove(value);
制约:我必须使用核心 JavaScript 。 框架不允许 。
如何从数组中删除一个特定值? 类似 :
array.remove(value);
制约:我必须使用核心 JavaScript 。 框架不允许 。
当前回答
这里有很多奇妙的答案, 但对我来说,最有效的答案 不是完全从阵列中移除我的元素, 而是简单地设定它的价值为无效。
这对大多数情况都有效,而且是一个很好的解决方案,因为我稍后会使用变量,而不想让变量消失,只是暂时空的。此外,这个方法完全可以交叉浏览。
array.key = null;
其他回答
这提供了一个前提值, 而不是一个值 。
注:它将更新给定阵列,并返回受影响的行。
用法
var removed = helper.remove(arr, row => row.id === 5 );
var removed = helper.removeAll(arr, row => row.name.startsWith('BMW'));
定义定义定义定义定义的定义定义定义定义定义的定义定义定义定义定义的定义定义定义定义定义定义的定义
var helper = {
// Remove and return the first occurrence
remove: function(array, predicate) {
for (var i = 0; i < array.length; i++) {
if (predicate(array[i])) {
return array.splice(i, 1);
}
}
},
// Remove and return all occurrences
removeAll: function(array, predicate) {
var removed = [];
for (var i = 0; i < array.length; ) {
if (predicate(array[i])) {
removed.push(array.splice(i, 1));
continue;
}
i++;
}
return removed;
},
};
我也碰到了这样的情况:我不得不从阵列中移除一个元素。 indexof没有在互联网探索器中工作, 因此我分享我的工作 jQuery.inArray () 解决方案 :
var index = jQuery.inArray(val, arr);
if (index > -1) {
arr.splice(index, 1);
//console.log(arr);
}
有许多方法可以从 JavaScript 阵列中去除一个特定元素。 下面是我研究中可以找到的五种最佳方法。
1. 直接使用“ splice () ” 方法
在以下代码段,从数组中删除特定预定位置的元素。
语法: 数组_ name.spice( begin_ index, 数字_ elements_ remove) ; 应用程序 :
var arr = [1、2、3、4、5、6、7、8、9、10]; 控制台.log ("原件阵列: "+arr " ; var remote = ar.spice(4、2); 控制台.log ("修改后的阵列: "+arr " ; 控制台.log ("元素删除: "+删除 " );
2. 使用“ splice() () ” 方法用“ valice () ” 方法用“ value () ” 删除元素
在以下代码段中,我们可以使用循环内的条件,删除所有等于预先确定值(前:所有元素等于值6)的所有元素。
var arr = [1, 2, 6, 3, 2, 6, 7, 8, 8, 9, 10] 控制台.log ("原件阵列: "+arr”; 对于 (var i = 0; i < arr. 长度; i++) { { {var remove = rr.spice(i, 1); i-; }} 控制台. log ("修改阵列: "+arr " ); / / 6 被移除控制台. log ("重新删除的元素: "+删除 ");
3. 使用“过滤器()”方法删除按值选择的元素
与使用“ spice() () ” 方法的执行类似, 但它没有改变现有的数组, 而是创造了新的元素阵列, 从而删除了不想要的元素 。
var 数组 = [1, 2, 3, 4, 5, 6, 7, 8, 8, 9, 9, 10] ; var 过滤 = 数组. filter( 函数( 值, 索引, rr) { 返回值 = 6 ; } ; 控制台. log ("原件数组 : "+array" ); 控制台. log ("新建数组 : "+filtered" ; / 6 被删除
4. 在“ Lodash” JavaScript 库中使用“ remove () ” 方法
在下面的代码段中, JavaScript 库里有叫作“ Lodash ” 的删除() 方法。 这个方法也与过滤方法相似 。
var 数组 = [1, 2, 3, 4, 5, 6, 7, 7, 8, 9, 10] 控制台. log ("原件数组: "+数组: "+数组: "+ + + + 数组: "; var remote Eplement = _.remove (ary, 函数(n) { return n\\ 6; }) 控制台. log ("修改后的数组: "+ 数组: "+ 数组: "removed 元素: "+ removeElement 元素 " ); / / 6 被删除 < src=" https://cdn.jsdelivr.net/npm/lodash@4.17.21lodash.min.js" / stamp >
5. 制作自定义除去方法
JavaScript没有本地的“ array. remove” 方法, 但我们可以创建一种使用以上方法的方法, 用于在以下代码片段中执行 。
var 数组 = [1, 2, 3, 4, 5, 6, 7, 8, 8, 9, 10] ; 函数数组 remove( arve, value) { 返回 arr. filter( 函数( 元素) { 返回元素 $= = 值;} } 控制台. log (" 原件数组: "+ 数组 " ); 控制台. log (" 修改数组: "+ trightremove( 数组, 6) ); / / 6 被删除 。
最后方法(第5项)更适合解决上述问题。
您可以简单地将删除函数添加到数组原体Type
类似的东西 :
Array.prototype.remove = function(value) {
return this.filter(item => item !== value)
}
Array. prototype. remove = 函数( 值) { 返回此功能 。 filter (项目 项 ! === value) } 让阵列 = [10, 15,20] 结果 = 数组. remove(10) 控制台.log (结果) (结果)
例如,您有一个字符数组,想要从数组中删除“A”。
数组有一个过滤方法,可以过滤并只返回您想要的元素。
let CharacterArray = ['N', 'B', 'A'];
我想返回元素 除了"A"。
CharacterArray = CharacterArray.filter(character => character !== 'A');
字符阵列必须是 : ['N', 'B']