javascript - 复制数组并删除字符串?Javascript
问题描述
我正在尝试制作一个没有带有“x”的所有字符串的数组副本,并将没有这些“x”字符串的新数组归因于下面的(deCode)变量。使用 for 循环或 push/pop 或 join/split 方法。谁能指出我正确的方向?谢谢你
var messageL = [ 'W', 'x', 'e', 'c', 'x', 'o', 'm', 'x', 'x', 'e', '\'', 'x', 's', ' ', 'h', 'o', 'x', 'm', 'x', 'x', 'e'];
var deCode = [];
解决方案
如果您需要使用 for 循环,您可以遍历数组并将每个元素推送到新数组。
var messageL = [ 'W', 'x', 'e', 'c', 'x', 'o', 'm', 'x', 'x', 'e', '\'', 'x', 's', ' ', 'h', 'o', 'x', 'm', 'x', 'x', 'e'];
var deCode = [];
for (let i = 0; i < messageL.length; i ++) {
if (messageL[i] !== "x") {
deCode.push(messageL[i]);
}
}
不过,还有更好的办法。Javascript 有一个filter 方法,它可以让你得到一个新数组,其中包含通过测试函数的旧数组中的每个元素。
var messageL = [ 'W', 'x', 'e', 'c', 'x', 'o', 'm', 'x', 'x', 'e', '\'', 'x', 's', ' ', 'h', 'o', 'x', 'm', 'x', 'x', 'e'];
// The .filter function passes every element to the function that you provide. If the function returns true, then that element is copied into a new array. Otherwise, it is not. Note that it doesn't modify the old array
var deCode = messageL.filter(function (letter) {
return letter !== "x"
});
您实际上可以通过使用箭头函数来进一步缩短它。这段代码做同样的事情:
var messageL = [ 'W', 'x', 'e', 'c', 'x', 'o', 'm', 'x', 'x', 'e', '\'', 'x', 's', ' ', 'h', 'o', 'x', 'm', 'x', 'x', 'e'];
var deCode = messageL.filter((element) => element !== "x");
推荐阅读
- javascript - 如何为 SVG 元素添加阴影
- javafx - 你如何让 ENTER 在全球范围内触发 JavaFX 的 onAction?
- javascript - 此代码有什么问题,标记未显示在地图中?
- python-3.x - 如果数据框的列中存在值,则将数据移到顶部
- c# - UWP - 我们如何通过本地磁贴通知重复显示 3 条静态文本消息
- java - 快速查找每个 (2k) 阶乘
- python - PlaidML 环境
- laravel - Laravel 控制每个管理员的请求数
- python - 使用 optimization.curve_fit 的曲线拟合在各处跳跃
- git - 两个github账号在同一台电脑上冲突