仅返回数组中的数字

时间:2019-02-26 11:15:30

标签: javascript arrays json firebase

我在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 我如何只用数字返回每个元素?

4 个答案:

答案 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 ) ;