【问题标题】:return only number in array仅返回数组中的数字
【发布时间】:2019-02-26 11:15:30
【问题描述】:

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

【问题讨论】:

  • 你能分享一下你想要返回每个元素的数组的结构吗?
  • childSnapshot.val() 是否返回一个对象?只有这样item.key = ... 才会起作用。所以你的目标是 returnArr 是一个对象数组?

标签: javascript arrays json firebase


【解决方案1】:

我认为您只需要项目字符串中包含的数字。然后,您需要一个正则表达式来获取该号码。在您的代码中,将returnArr.push(item); 行替换为:

var m = /\d+/.exec(item);

if (m) {
  returnArr.push(m[0] * 1);
}

*1 是将数字转换为整数。

【讨论】:

    【解决方案2】:

    您可以使用带有正则表达式的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】:

      试试这个:

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

      【讨论】:

        【解决方案4】:

        将每个元素返回到数组时,您可以使用替换方法:

        str = item.replace(/\D/g,'');
        returnArr.push(str);
        

        然后您可以剪切非数字部分,然后将其推送到您的数组。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2023-01-28
          • 2018-03-10
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-01-22
          • 1970-01-01
          相关资源
          最近更新 更多