【问题标题】:Need to remove string from an Array需要从数组中删除字符串
【发布时间】:2019-06-19 14:25:32
【问题描述】:

我在这样的 for 循环中有一个数组:

var arr = ["abc", "5", "city", "2", "area", "2", "max", "choice"];

我只需要这样的数字:

var arr = ["5","2","2"];

所以有人可以在这里帮忙。

【问题讨论】:

标签: javascript arrays filter numbers underscore.js


【解决方案1】:

另一种方法是使用转换后的数字为字符串并与原始值进行比较。

var array = ["abc", "5", "city", "2", "area", "2", "max", "choice"],
    result = array.filter(v => (+v).toString() === v);

console.log(result);

isFinite 只是更短的方法

var array = ["abc", "5", "city", "2", "area", "2", "max", "choice"],
    result = array.filter(isFinite);

console.log(result);

虽然标记为,但您可以使用下划线的过滤和回调。

var array = ["abc", "5", "city", "2", "area", "2", "max", "choice"],
    result = _.filter(array, _.isFinite);

console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }
<script src="https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.9.1/underscore-min.js"></script>

【讨论】:

  • 如果十进制中有任何尾随零,例如"2.10",这将不起作用
  • isFinite() 是一个很好的方法
  • 在确定数字之前我不知道 isFinite 强制。很有用! +1
【解决方案2】:

filter 将字符串强制转换为整数时为整数:

var arr = ["abc", "5", "city", "2", "", "area", "2", "max", "choice"];

const out = arr.filter(el => (
  el !== '' && Number.isInteger(Number(el)))
);

console.log(out)

【讨论】:

  • Number.isInteger(+"") 也返回 true。
  • 不错的收获。固定。
【解决方案3】:

var arr = ["abc", "5", "city", "2", "area", "2", "max", "choice"];

const filtered = arr.filter(item => !isNaN(item));

console.log(filtered);

【讨论】:

  • 为什么要投反对票,这是一个完全有效的答案。当你做的时候,有礼貌地解释你的行为......
【解决方案4】:

你可以使用filter方法和isNaN函数var numbers = arr.filter(c=> !isNaN(c));

var arr = ["abc", "5", "city", "2", "area", "2", "max", "choice"];
var numbers = arr.filter(c=> !isNaN(c));
console.log(numbers);

【讨论】:

    【解决方案5】:

    使用forEach 循环并使用isNaN() 进行检查

    var arr = ["abc", "5", "city", "2", "area", "2", "max"];
    var a=[];
    arr.forEach(e=>isNaN(e)?true:a.push(e))
    console.log(a)

    【讨论】:

    • isNaN(Number(e)) - 使用Number 进行转换是多余的。 isNaN 已经足够了。它的名字很糟糕——实际上是isArgumentGoingToConvertToNaNWhenYouConvertItToNumber
    猜你喜欢
    • 2011-12-24
    • 1970-01-01
    • 2015-08-06
    • 2016-06-29
    • 2011-02-16
    • 2021-06-14
    • 1970-01-01
    相关资源
    最近更新 更多