如何从数组中删除一个特定值? 类似 :
array.remove(value);
制约:我必须使用核心 JavaScript 。 框架不允许 。
如何从数组中删除一个特定值? 类似 :
array.remove(value);
制约:我必须使用核心 JavaScript 。 框架不允许 。
当前回答
不可改变和一班制方式:
const newArr = targetArr.filter(e => e !== elementToDelete);
其他回答
使用 jQuery. grep () :
var y = [1, 2, 3, 9, 4] var 删除项目 = 9; y = jQuery.grep(y, 函数(价值) {返回值 = demotephle; }; 控制台. log(y) <Src=" https://ajax.googleapis.com/ajax/libs/jquery/1.12.2/jquery.min.js"\\/pict>
于2016年10月16日编辑
如果浏览器不支持 JavaScript 标准函数, 请按标准 JavaScript 函数执行, 如果您的浏览器不支持这些函数 - 使用多填
在此代码示例中, 我使用数组. filter (...) 函数从数组中删除不想要的项目 。 此函数不会改变原始数组, 创建一个新的数组 。 如果您的浏览器不支持此函数( 例如, 版本 9 之前的 Internet Explorer 或版本 1. 5 之前的 Firefox) , 请考虑以 Core- js 组合填充 。
删除项目( ECMA-262 版5 代码 AKA 旧风格 JavaScript)
var value = 3
var arr = [1, 2, 3, 4, 5, 3]
arr = arr.filter(function(item) {
return item !== value
})
console.log(arr)
// [ 1, 2, 4, 5 ]
删除项目( ECMAScript 6 代码)
let value = 3
let arr = [1, 2, 3, 4, 5, 3]
arr = arr.filter(item => item !== value)
console.log(arr)
// [ 1, 2, 4, 5 ]
IMPORTANT ECMAScript 6 () 箭头函数语法在互联网探索器、 45 版本前的Chrome、 22 版本前的Firefox 和 10 版本前的Safari 中完全不支持。 要在旧浏览器中使用 ECMAScript 6 语法, 您可以使用 BabelJS 。
删除多个项目( ECMAScript 7 代码)
此方法的另一个好处是,您可以删除多个项
let forDeletion = [2, 3, 5]
let arr = [1, 2, 3, 4, 5, 3]
arr = arr.filter(item => !forDeletion.includes(item))
// !!! Read below about array.includes(...) support !!!
console.log(arr)
// [ 1, 4 ]
IMPORANT 矩阵。 包含(...) 函数在 Internet Explorer 中根本不支持, Chrome 版本47, Firefox 版本43, Safari 版本9, 版本14 之前的边缘中根本不支持, 但是您可以使用核心js 进行多种填充 。
删除多个项目( 未来, 也许)
如果这个“ 丁字语法” 提案被接受, 你就可以做到:
// array-lib.js
export function remove(...forDeletion) {
return this.filter(item => !forDeletion.includes(item))
}
// main.js
import { remove } from './array-lib.js'
let arr = [1, 2, 3, 4, 5, 3]
// :: This-Binding Syntax Proposal
// using "remove" function as "virtual method"
// without extending Array.prototype
arr = arr::remove(2, 3, 5)
console.log(arr)
// [ 1, 4 ]
尝试自己在 BabelJS :)
参考参考参考参考参考文献
包括职能构成
尝试使用删除运算符删除数组元素
例如:
const arr = [10, 20, 30, 40, 50, 60];
delete arr[2]; // It will Delete element present at index 2
console.log( arr ); // [10, 20, undefined , 40, 50, 60]
注意: 使用删除运算符将会在数组中留下空空空/ 空洞。 它不会提醒数组的长度。 要在元素被删除时更改数组的长度, 请使用复数法 。
希望这能解决你所有的问题
const newArray = oldArray.filter(item => item !== removeItem);
(function removeFromArrayPolyfill() {
if (window.Array.prototype.remove) return;
Array.prototype.remove = function (value) {
if (!this.length || !value) return;
const indexOfValue = this.indexOf(value);
if (indexOfValue >= 0) {
this.splice(indexOfValue, 1);
}
};
})();
// testing polyfill
const nums = [10, 20, 30];
nums.remove(20);
console.log(nums);//[10,30]