从数组/字符串中删除所有小数和单个数字

remove all Decimals and single numbers from array / string

所以我的脚本生成了一大块 "Piano Notes",类似于...

 var songNotes  = "...";

the large Piano notes content

我的问题是在我需要的钢琴音符之间 [也在 fiddle] 中有空的“,”和十进制数字..所以我不知道如何删除空的 , 和小数一样大 “1.0416666666642413,0.625,0,g3,1498.9583333333358,0,c3,1.04166666666642413,0.625,0,c3” 我希望将它们删除,除了需要的词

var theRightOnes = "s2,as2,cs3,ds3,fs3,gs3,as3,gs3,cs4,ds4,fs4,cs3,as4,gs4,ds5,a2,cs4,b2,c3,a3,ds4,b3,c4,as3,gs2,e3,c3,c4,cs3,ds3,a4,fs3,gs3,as3,g3,f3,b4,c5,a3,d4,as2,e4,g4,d3,b3,b2,f4,a2,d4,e4,cs5,gs1,e2,c2,c3,cs2,ds2,a3,fs2,gs2,as2,g2,f2,b3,c4,a2,d3,as1,e3,g3,d2,b2,b1,f3,a1,d5,e5";

谁能告诉我如何实现这一点? 如果有人需要更多信息,那么我准备好这样做了..

此致 - Adarsh Hegde

我想你想从笔记中删除所有数字。

你可以像下面这样说

var notes = songNotes.split(",").filter(function(note){
    return isNaN(note);
});

console.log(notes);
var notesArr = songNotes.split(",");
var len = notesArr.length;
while(len--) {
    if(!notesArr[len] || !isNaN(parseInt(notesArr[len], 10))) {
        notesArr.splice(len, 1);
    } 
}

songNotes = notesArr.join(",");

您可以使用 Array.filter(参见 MDN)来清除不需要的值:

var wantedNotes = songNotes.split(',')
                   .filter(function (v) {
                      return isNaN(+v) && v.trim().length
                   });

jsFiddle

就用正则表达式,像这样:

var a = "1.0416666666642413,0.625,0,g3,1498.9583333333358,,0,c3,1.0416666666642413,0.625,0,c3"; console.log(a.replace(/\b(\d+(\.\d+)?),+/g,""));