【问题标题】:In array,How I can make recognition between elements that are they IP?在数组中,我如何在它们是 IP 的元素之间进行识别?
【发布时间】:2020-07-06 00:30:50
【问题描述】:

我有一个像下面这样的数组:

array = [["127.0.0.1"],["127.0.0.1"],[],[]]

并想提取其中一个 IP,问题是我想识别一个具有 IP 和空元素的元素之间的区别,首先我为识别数字制作了一个过滤器,但现在我无法得到结果我尝试这个方式:

let IpString = array.split("\"");

///and gave me this bellow result

Array(5) ["[[", "127.0.0.1", "],[", "127.0.0.1", "],[],[]]"]
browser_prototype.js:268
length:5
__proto__:Array(0) [, …]
0:"[["
1:"127.0.0.1"
2:"],["
3:"127.0.0.1"
4:"],[],[]]"

但我认为我应该找到一种可以识别空元素和 IP 元素的方法,然后我只需要一个 IP,因为总是存在相同和相等的。 我正在寻找以下结果:

127.0.0.1

【问题讨论】:

  • array.filter(arr => arr.length).map(arr => arr[0]) 会给你["127.0.0.1", "127.0.0.1"]
  • 如果我的数组像上面的 Array(5) ["[[", "127.0.0.1", "],[", "127.0.0.1", "],[],[] ]"] ,我不能做你推荐的代码@blex
  • 您在此处提到的数组是您尝试的split 的结果。我的示例是指您在问题中所说的第一件事“我有一个如下所示的数组”。之后的事情看起来真的很脏。如果这里没有人给出对您有帮助的答案,请澄清您的问题,您实际上有什么作为输入,以及您想要什么作为输出。会更容易理解
  • 不,我写了我需要的东西,只是问你是否喜欢,但忘了它,我有我需要的东西,谢谢

标签: javascript arrays ip


【解决方案1】:

我不确定我是否明白你想要做什么,但如果你确定你的数组要么是空的或者里面有 IP,你可能只需要检查长度以查看是否有任何东西在数组中。

我在这里使用filter 函数。它接受一个带参数的回调并期望回调返回一个boolean

const array = [["127.0.0.1"],["127.0.0.1"],[],[]];
// we use the filter function to check for the length of each sub-arrays.
// here, a length of 0 would evaluate as falsy, thus not including the empty array.
const ips = array.filter(item => item.length);
console.log(ips.length);

(可选)感谢blex's comment,您可能希望将多维数组映射到一维。更容易理解。如果是这样,请查看我们的their comment

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-12-11
    • 2023-04-06
    • 1970-01-01
    • 2013-12-08
    • 1970-01-01
    • 1970-01-01
    • 2021-01-24
    • 2018-03-30
    相关资源
    最近更新 更多