У меня есть массив внутри цикла for, подобный этому:
var arr = ["abc", "5", "city", "2", "area", "2", "max", "choice"];
И мне нужен только такой номер:
var arr = ["5","2","2"];
Так может кто-нибудь, пожалуйста, помогите здесь.
Другой подход с использованием преобразованного числа в строку и сравнение с исходным значением.
var array = ["abc", "5", "city", "2", "area", "2", "max", "choice"], result = array.filter(v => (+v).toString() === v); console.log(result);
Просто более короткий подход с isFinite
isFinite
var array = ["abc", "5", "city", "2", "area", "2", "max", "choice"], result = array.filter(isFinite); console.log(result);
Хотя и помечены underscore.js , вы можете использовать фильтрацию и обратный вызов из подчеркивания.
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>
filter из строк, которые являются целыми числами, когда они приводятся к одному:
filter
var arr = ["abc", "5", "city", "2", "", "area", "2", "max", "choice"]; const out = arr.filter(el => ( el !== '' && Number.isInteger(Number(el))) ); console.log(out)
Использование forEach циклов и проверка с использованием isNaN()
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)
Вы можете использовать filter метод с isNaN функцией var numbers = arr.filter(c=> !isNaN(c));
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);
var arr = ["abc", "5", "city", "2", "area", "2", "max", "choice"]; const filtered = arr.filter(item => !isNaN(item)); console.log(filtered);