如何从数组中删除一个特定值? 类似 :
array.remove(value);
制约:我必须使用核心 JavaScript 。 框架不允许 。
如何从数组中删除一个特定值? 类似 :
array.remove(value);
制约:我必须使用核心 JavaScript 。 框架不允许 。
当前回答
这提供了一个前提值, 而不是一个值 。
注:它将更新给定阵列,并返回受影响的行。
用法
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;
},
};
其他回答
您可以从数组中添加一个原型函数来“ 移除” 元素 。
以下示例显示当我们知道一个元素的索引时, 如何简单地从数组中删除一个元素。 我们用它来使用 Array. filter 方法 。
Array. prototype. removeByIndex = 函数 (i) {如果 (! Number. is Integer(i) {i < 0) {/ i 必须是一个整数返回它;} 返回此. filter( f, indx) { indx! = i)} var a = [5, - 89, 2 * 2, " some string", null, froid, 未定义, 20, null, 5]; var b = a. remove ByIndex(2); control.log(a); control.log(b);
有时候我们不知道元素的索引
Array. prototype. remove = 函数 (i) { 返回此. filter (f \ \ f \ f y = i) {var a = [5, - 89, 2 ( 2 * 2), “ 一些字符串 ” 无效, 错误, 未定义, 20, 无效, 5] ; var b = a. remove(5). remove (null); 控制台. log (a); 控制台. log (b) / 它消除了所有搜索值的发生次数 。
但是,当我们只想要删除搜索值的首次出现时, 我们可以在函数中使用 Array. indexof 方法 。
Array. prototype. removeFirst = 函数 (i) {i = this.indexof (i); if (! Number. is Integer (i) {i < 0) {返回此 ;} 返回此. filter (f, indx) { indx = indx ! = i)} var a = [5, - 89, 2 * 2, " some string", null, fraud, 未定义, 20, null, 5]; var b = a.remove First(5).remove First(nell); translavor.log(a) ; controad.log(b);
由你决定如何行动。
一种办法是使用复数法,从数组中删除项目:
let array = [1, 2, 3]
array.splice(1, 1);
console.log(array)
// return [1, 3]
但要确保您通过第二个参数,否则最终会删除索引后的全部数组。
第二个办法是使用过滤法,其好处在于它不可改变,这意味着你的主阵列不会被操纵:
const array = [1, 2, 3];
const newArray = array.filter(item => item !== 2)
console.log(newArray)
// return [1, 3]
理解这一点:
您可以使用 JavaScript 阵列来组合数值, 并在它们上面循环。 数组项目可以以多种方式被添加和删除。 总共有9种方法( 使用其中适合你的任何一种方法) 。 JavaScript 阵列不使用删除方法, 而是有多种方法可以清除数组值 。
这样做的不同方法:
您可以以这些方式从 JavaScript 阵列中删除元素 :
1-pop: 从阵列结尾处移除 。
2- Shift: 从数组的开头删除 。
3- 秒: 从特定的阵列索引中删除 。
4- 过滤器 : 允许您通过程序从矩阵中移除元素 。
方法 1: 从 JavaScript 阵列起始时删除元素
var ar = [“零 ” , “一 ” , “二 ” , “二 ” , “三 ” ; ar. shift (); ; // 返回“ 零” 控制台. log (ar ) ; / / [“ 1 ” , “ 2 ” , “ 三 ” ]
方法2:从 JavaScript 阵列结束时删除元素
var ar ar = [1、2、3、4、5、6]; ar = 4; // 设定删除元素控制台的长度; log( ar ); / / [ 1、 2、 3、 4] var ar ar = [ 1、 2、 3、 4、 5、 6] ; ar.pop (); / 返回 6 lador. log ( ar ); / [ 1、 2、 3、 4、 5]
方法 3: 在 JavaScript 中使用串列来移除队列元素
var arr = [1、2、3、4、5、6、7、8、9、10] ; var = rr.spice(2,2,2); laporal.log(arr); var list = [“巴”、“巴”、“巴”、“巴”、“瓦兹”、““foo”、“qux”; 列表.spice(0, 2); laft.log(list);
方法 4 : 使用 Splice 按值删除队列项目
var arr = [1、2、3、4、4、5、6、7、8、9、10]; for( var i = 0; i < arr. long; i++){如果( rr) = 5 { rr.spice(i, 1);} { rr.spice( y, 1);} { { [1, 2, 3, 4, 4, 6, 7, 8, 9, 9, 10];f( var i = 0; i < arr. lon; i++){ 如果 (rr) = 5 { arr.spice(i, 1); i-;} } /[1, 2, 3, 4, 6, 7, 8, 9, 10]
方法5:使用矩阵过滤法按值删除项目
var 数组 = [1, 2, 3, 4, 5, 6, 7, 8, 8, 9, 9, 10] ; var 过滤 = 数组. filter( 功能( 值、 索引、 rr) { 返回值 > 5; } // filter { [6, 7, 8, 9] / filter { [1、2, 3, 4, 5, 6, 7, 8, 9, 10]
方法6: Lodash 阵列清除方法
var 数组 = [1, 2, 3, 4] ; var evens =_.remove( 数组, 函数(n) { 返回 n%% 2 { { 0;} ); 控制台. log( 数组); / / { {[ 1, 3] 等式. log( events); / { { {[ 2, 4]
方法7:制定方法
var 数组 = [1, 2, 3, 4, 5, 6, 7, 8, 8, 9, 10]; 函数数组 remove( rr, value) { 返回 arr. filter( ele) { 返回 ele yel = value;}} var 结果 = tratremove( 数组, 6); / 结果 = [1, 2, 3, 4, 5, 7, 8, 9, 10]
方法 8 : 使用 删除运算符明确删除矩阵元素
var ar = [1, 2, 3, 4, 4, 5, 6]; 删除 ar[4]; // 删除含有索引 4 控制台的元素 。 log( ar ); / [ 1, 2, 3, 4, 未定义, 6] 警报( ar ); / 1, 2, 3,4,6
方法 9: 清除或重置 JavaScript 阵列
var ar = [1、2、3、4、4、5、6];//do staffar = [];//a new, 空阵列;vararar1 = [1、2、3、4、5、6];varar2 = arr1;/ 参考rr1 由另一个变量ar1 = [;控制台(rr2);/ 输出[1、2、3、4、4、5、6] rr1 = [1、2、3、4、5、6] ;varar2 = arr1;// 参考arr1 =另一个变量ar1 = [;控制台(rr2);/ 输出[1、2、3、4、5、6]
摘要:
关键是要通过删除 JavaScript 矩阵项目来管理您的数据。 虽然没有单一的“ 撤销” 功能, 但您可以使用各种方式和战略清除不必要的阵列元素 。
const Delete = (id) => {
console.log(id)
var index = Array.map(function(e){
return e.id;
}).indexOf(id);
Array.splice(index,1);
}
我找到了这个博客文章,
9 从 JavaScript 阵列中删除元素的方法 - 附加如何安全清除 JavaScript 阵列
我更喜欢使用过滤器 () :
var filtered_arr = arr.filter(function(ele){
return ele != value;
})