从与字符串混合的数组中提取数字 - Javascript
Extract Numbers from Array mixed with strings - Javascript
我有一个由字符串和数字组成的数组。我需要对数字进行排序或更好地只提取另一个数组中的数字。这是示例:
const myArr = ['Prihodi 23456 danaci 34 razhodi 23455 I drugi.']
我需要做成这样
const filtered = [23456, 34, 23455]
我使用 split(' ') 方法用逗号分隔它们,但不知道如何为 JS 过滤它们,它们都是字符串。
const myArr = ['Prihodi 23456 danaci 34 razhodi 23455 I drugi.'];
var result=[];
myArr.forEach(function(v){
arr=v.match(/[-+]?[0-9]*\.?[0-9]+/g);
result=result.concat(arr);
});
const filtered = result.map(function (x) {
return parseInt(x, 10);
});
console.log(filtered)
这可能是一个可行的解决方案,
参见 MDN map(), replace(), trim() and split()
const myArr = ['Prihodi 23456 danaci 34 razhodi 23455 I drugi.'];
filtered = myArr[0].replace(/\D+/g, ' ').trim().split(' ').map(e => parseInt(e));
console.log(filtered);
或
const regex = /\d+/gm;
const str = `Prihodi 23456 danaci 34 razhodi 23455 I drugi`;
let m;
const filter = [];
while ((m = regex.exec(str)) !== null) {
// This is necessary to avoid infinite loops with zero-width matches
if (m.index === regex.lastIndex) {
regex.lastIndex++;
}
// The result can be accessed through the `m`-variable.
m.forEach((match, groupIndex) => {
filter.push(parseInt(match))
});
}
console.log(filter);
const myArr = ['Prihodi 23456 danaci 34 razhodi 23455 I drugi.']
const reduced = myArr[0].split(' ').reduce((arr, item) => {
const parsed = Number.parseInt(item)
if(!Number.isNaN(parsed)) arr.push(parsed)
return arr
}, [])
console.log(reduced)
您可以使用简单的 Regex
和 Array.prototype.map
:
const myArr = ['Prihodi 23456 danaci 34 razhodi 23455 I drugi.']
const result = myArr[0].match(/\d+/gi).map(Number);
console.log(result);
我很久以前就完成了任务。但是现在我找到了这个快速解决方案
const arr = ['Prihodi 23456 danaci 34 razhodi 23455 I drugi.']
const res = arr.join('')
.split(' ')
.filter(e => +e)
.map(num => +num);
console.log(res);
const array = ["string1", -35, "string2", 888, "blablabla", 987, NaN];
const mapArray = array.filter((item) => {
if (item < 0 || item >= 0) return item;
});
console.log(mapArray);
我有一个由字符串和数字组成的数组。我需要对数字进行排序或更好地只提取另一个数组中的数字。这是示例:
const myArr = ['Prihodi 23456 danaci 34 razhodi 23455 I drugi.']
我需要做成这样
const filtered = [23456, 34, 23455]
我使用 split(' ') 方法用逗号分隔它们,但不知道如何为 JS 过滤它们,它们都是字符串。
const myArr = ['Prihodi 23456 danaci 34 razhodi 23455 I drugi.'];
var result=[];
myArr.forEach(function(v){
arr=v.match(/[-+]?[0-9]*\.?[0-9]+/g);
result=result.concat(arr);
});
const filtered = result.map(function (x) {
return parseInt(x, 10);
});
console.log(filtered)
这可能是一个可行的解决方案,
参见 MDN map(), replace(), trim() and split()
const myArr = ['Prihodi 23456 danaci 34 razhodi 23455 I drugi.'];
filtered = myArr[0].replace(/\D+/g, ' ').trim().split(' ').map(e => parseInt(e));
console.log(filtered);
或
const regex = /\d+/gm;
const str = `Prihodi 23456 danaci 34 razhodi 23455 I drugi`;
let m;
const filter = [];
while ((m = regex.exec(str)) !== null) {
// This is necessary to avoid infinite loops with zero-width matches
if (m.index === regex.lastIndex) {
regex.lastIndex++;
}
// The result can be accessed through the `m`-variable.
m.forEach((match, groupIndex) => {
filter.push(parseInt(match))
});
}
console.log(filter);
const myArr = ['Prihodi 23456 danaci 34 razhodi 23455 I drugi.']
const reduced = myArr[0].split(' ').reduce((arr, item) => {
const parsed = Number.parseInt(item)
if(!Number.isNaN(parsed)) arr.push(parsed)
return arr
}, [])
console.log(reduced)
您可以使用简单的 Regex
和 Array.prototype.map
:
const myArr = ['Prihodi 23456 danaci 34 razhodi 23455 I drugi.']
const result = myArr[0].match(/\d+/gi).map(Number);
console.log(result);
我很久以前就完成了任务。但是现在我找到了这个快速解决方案
const arr = ['Prihodi 23456 danaci 34 razhodi 23455 I drugi.']
const res = arr.join('')
.split(' ')
.filter(e => +e)
.map(num => +num);
console.log(res);
const array = ["string1", -35, "string2", 888, "blablabla", 987, NaN];
const mapArray = array.filter((item) => {
if (item < 0 || item >= 0) return item;
});
console.log(mapArray);