在javascript

时间:2018-07-29 17:01:37

标签: javascript arrays

我有一个python脚本,可以像这样向我提供一个数组作为输出:

['1.1.1.1-1.1.1.5','2.2.2.2-2.2.3.3','5.5.5.5-5.5.5.5','6.6.1.2-6.6.1.7']

这些是IP地址范围。但是,此数组的第三个元素不是范围。如何解析数组以查找此类元素并仅用单个IP替换它们?

例如:“ 5.5.5.5-5.5.5.5”应仅替换为“ 5.5.5.5”

我有一种方法。但是我不确定它是否完全有效。我正在寻找是否有更好的方法。

let ipRangeArray = ['1.1.1.1-1.1.1.5','2.2.2.2-2.2.3.3','5.5.5.5-5.5.5.5','6.6.1.2-6.6.1.7']

for (const [index, value] of ipRangeArray.entries()) {
  let splitArray = value.split('-'); //splitArray = ['5.5.5.5','5.5.5.5']
  splitArray[0] == splitArray[1] && (ipRangeArray[index] = splitArray[0])
} 

console.log(ipRangeArray); // ["1.1.1.1-1.1.1.5", "2.2.2.2-2.2.3.3", "5.5.5.5", "6.6.1.2-6.6.1.7"]

谢谢

1 个答案:

答案 0 :(得分:0)

您可以分割字符串并比较元素。

var array = ['1.1.1.1-1.1.1.5', '2.2.2.2-2.2.3.3', '5.5.5.5-5.5.5.5', '6.6.1.2-6.6.1.7'],
    clean = array.map(s => (([l, r]) => l === r ? l : s)(s.split('-')));
    
console.log(clean);