如何删除javascript中的特定数组元素?

toiithl6  于 2023-02-11  发布在  Java
关注(0)|答案(4)|浏览(153)

我有这个数组
变量数组=[“20 - 2”、“319- 2”、“161- 2”、“320- 2”、“12- 0”、“575- 12”、“279- 12”、“280- 12”、“412- 12”、“423- 12”、“424- 12”、“425- 12”、“291- 12”、“0- 12”、“449- 12”]
我想删除包含“-12”和“-0”的元素
预期结果=[“20 - 2”、“319- 2”、“161- 2”、“320- 2”]
我怎样才能在javascript中实现这个预期的结果。

6yoyoihd

6yoyoihd1#

您可以使用.filter执行此操作。
示例:

var array = ['20-2', '319-2', '161-2', '320-2', '12-0', '575-12', '279-12', '280-12', '412-12', '423-12', '424-12', '425-12', '291-12', '0-12', '449-12'];

var filtered = array.filter(item => !item.includes('-12') && !item.includes('-0'));

执行此代码后,filtered变为['20-2', '319-2', '161-2', '320-2']

5gfr0r5j

5gfr0r5j2#

可以将Array.filter方法与String.includes方法结合使用。
下面是一个例子:

let array = ['20-2', '319-2', '161-2', '320-2', '12-0', '575-12', '279-12', '280-12', '412-12', '423-12', '424-12', '425-12', '291-12', '0-12', '449-12']

let newArray = array.filter((element) =>
        !element.includes('-12') && !element.includes('-0')
)

console.log(newArray)
bjp0bcyl

bjp0bcyl3#

这可以通过将Array.filter与String.includes方法结合使用来实现。Array.filter方法将创建一个新的Array,其中包含导致肯定条件的每个项。

let array = ['20-2', '319-2', '161-2', '320-2', '12-0', '575-12', '279-12', '280-12', '412-12', '423-12', '424-12', '425-12', '291-12', '0-12', '449-12']

let filteredArray = array.filter(item => (!item.includes("-12")) && !item.includes("-0"))

console.log(filteredArray)

参考:

z31licg0

z31licg04#

如果你想在字符串的任意位置 * 找到“12”和“0”*(第一个 * 或第二个 *),你可以使用一个正则表达式,用\b来表示单词边界:

var array = ['20-2', '319-2', '161-2', '320-2', '12-0', '575-12', '279-12', '280-12', '412-12', '423-12', '424-12', '425-12', '291-12', '0-12', '449-12','3-120','112-14','12-7'];

const res = array.filter(el=>![/\b0\b/,/\b12\b/].some(rx=>rx.test(el)));

console.log(res)

rx中的字边界确保像'3-120','112-14'这样的元素不会从结果集中删除。
对于给定的问题,您可以将搜索要求合并为一个,而不是使用两个正则表达式:

var array = ['20-2', '319-2', '161-2', '320-2', '12-0', '575-12', '279-12', '280-12', '412-12', '423-12', '424-12', '425-12', '291-12', '0-12', '449-12','3-120','112-14','12-7'];

const res = array.filter(el=>!/\b(?:0|12)\b/.test(el));

console.log(res)

当然,如果您只想在数字012出现在(最后一个)“-"之后时删除元素,则可以执行以下操作:

var array = ['20-2', '319-2', '161-2', '320-2', '12-0', '575-12', '279-12', '280-12', '412-12', '423-12', '424-12', '425-12', '291-12', '0-12', '449-12','3-120','112-14','12-7'];

const res = array.filter(el=>!/-(?:0|12)$/.test(el));

console.log(res)

相关问题