我在Firebase中有一个数据库,并将其转换为数组,这是我的代码:
let timeRef = firebase.database().ref('root/grupo0/user0/0');
function snapshotToArray(snapshot) {
let returnArr = [];
snapshot.forEach(function(childSnapshot) {
let item = childSnapshot.val();
item.key = childSnapshot.key;
returnArr.push(item);
});
return returnArr;
};
const timeRefArray = timeRef.on('value', function(snapshot) {
console.log(snapshotToArray(snapshot));
});
每个元素都是这样的:^ MED〜@ 1550648873 我如何只用数字返回每个元素?
答案 0 :(得分:0)
当将每个元素返回到数组时,可以使用replace方法:
str = item.replace(/\D/g,'');
returnArr.push(str);
然后,您可以先剪切非数字部分,然后再将其推入数组。
答案 1 :(得分:0)
我认为您只想要包含在项目字符串中的数字。然后,您需要一个正则表达式来获取数字。在您的代码中,将行returnArr.push(item);
替换为:
var m = /\d+/.exec(item);
if (m) {
returnArr.push(m[0] * 1);
}
*1
将数字转换为整数。
答案 2 :(得分:0)
您可以将string.match()
与正则表达式一起使用以提取数字,然后使用parseInt
将结果转换为数字。然后,如果不是NaN
,则可以有条件地将项目推入数组:
const items = ['^MED~@1550648873', '^MED~@'];
const returnArr = [];
items.forEach(item => {
const value = parseInt((item.match(/\d+/) || [''])[0]);
!isNaN(value) && returnArr.push(value);
});
console.log(returnArr);
答案 3 :(得分:0)
尝试一下:
var arr = [ '^MED~@1550648873','Am2mm55','^MED' ] ;
var patt = new RegExp('\\d+','g') ;
var result = arr.reduce( (acc, ele) => {
if ( isTrue = ele.match(patt) ) { acc.push( isTrue.join('') ) ; }
return acc ;
}, []) ;
console.log( result ) ;