从数组/字符串中删除所有小数和单个数字
remove all Decimals and single numbers from array / string
所以我的脚本生成了一大块 "Piano Notes",类似于...
var songNotes = "...";
我的问题是在我需要的钢琴音符之间 [也在 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
});
就用正则表达式,像这样:
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,""));
所以我的脚本生成了一大块 "Piano Notes",类似于...
var songNotes = "...";
我的问题是在我需要的钢琴音符之间 [也在 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
});
就用正则表达式,像这样:
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,""));