У меня есть массив из строк и чисел. Мне нужно отсортировать числа или лучше извлечь только числа из другого массива. Вот пример:
const myArr = ['Prihodi 23456 danaci 34 razhodi 23455 I drugi.']
Мне нужно сделать это так
const filtered = [23456, 34, 23455]
Я использовал метод split (''), чтобы разделить их запятой, но не знаю, как отфильтровать их для JS, все они являются строками.
Сам факт того, что вы используете слово «фильтр», должен указать вам в правильном направлении, если вы решите исследовать его дальше самостоятельно.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


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.info(filtered)Это возвращает массив строковых представлений чисел, а не то, что запросил OP.
изменил его на числа
Это могло быть возможным решением,
См. MDN для карта(), заменять(), отделка() и расколоть()
const myArr = ['Prihodi 23456 danaci 34 razhodi 23455 I drugi.'];
filtered = myArr[0].replace(/\D+/g, ' ').trim().split(' ').map(e => parseInt(e));
console.info(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.info(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.info(reduced)Я давно закончил задачу. Однако теперь я нашел это быстрое решение
const arr = ['Prihodi 23456 danaci 34 razhodi 23455 I drugi.']
const res = arr.join('')
.split(' ')
.filter(e => +e)
.map(num => +num);
console.info(res);
const array = ["строка1", -35, "строка2", 888, "blablabla", 987, NaN];
const mapArray = array.filter((item) => {
if (item < 0 || item >= 0) return item;
});
console.info(mapArray);
Обратите внимание, что это не сработает, если исходный массив включал отрицательные числа.
Вам нужны два результирующих массива, один со строками, другой с числами? в том, что? Какой код вы пробовали использовать до сих пор?