我需要一個 javascript 函式,該函式可用于在單擊按鈕后在 textarea 內劃分(使用指定的定義數字)陣列
<textarea id="source>
const uint8_t ArrayName [] PROGMEM = { // 10 lines
0xAA, 0xAA, 0xAA, 0xAA, 0xAA,
0xBB, 0xBB, 0xBB, 0xBB, 0xBB,
0xCC, 0xCC, 0xCC, 0xCC, 0xCC,
0xDD, 0xDD, 0xDD, 0xDD, 0xDD,
0xEE, 0xEE, 0xEE, 0xEE, 0xEE,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0x00, 0x00, 0x00, 0x00, 0x00,
0x01, 0x01, 0x01, 0x01, 0x01,
0x22, 0x22, 0x22, 0x22, 0x22,
0x33, 0x33, 0x33, 0x33, 0x33,
};
</textarea>
在結果 textarea 上進入這個(這個樣本除以 3)
<textarea id="result>
const uint8_t ArrayName_0 [] PROGMEM = {
0xAA, 0xAA, 0xAA, 0xAA, 0xAA,
0xBB, 0xBB, 0xBB, 0xBB, 0xBB,
0xCC, 0xCC, 0xCC, 0xCC, 0xCC
};
const uint8_t ArrayName_1 [] PROGMEM = {
0xDD, 0xDD, 0xDD, 0xDD, 0xDD,
0xEE, 0xEE, 0xEE, 0xEE, 0xEE,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF
};
const uint8_t ArrayName_2 [] PROGMEM = {
0x00, 0x00, 0x00, 0x00, 0x00,
0x01, 0x01, 0x01, 0x01, 0x01,
0x22, 0x22, 0x22, 0x22, 0x22
};
const uint8_t ArrayName_3 [] PROGMEM = { // rest of line
0x33, 0x33, 0x33, 0x33, 0x33
};
</textarea>
我使用這個從這里到的函式,但結果是錯誤的我很困惑將第一行的副本添加到每個結果陣列的開頭
function divide() {
var lines = $('#source').val().split(/\n/);
var texts = []
for (var i = 0; i < lines.length; i ) {
if (/\S/.test(lines[i])) {
texts.push($.trim(lines[i]));
}
}
var list = texts;
var li = "";
for (var e = 0; e < list.length; e ) {
if (e % 3)
{
var lit = li list[e] ;
li = lit.substring(0,lit.length-1);
li = li '\n}\n';
} else
{
li = li list[e] '\n';
}
}
li = lit.substring(0,lit.length-1);
li = li '\n}';
document.getElementById("result").value = li;
}
感謝任何人在此來源中提供幫助。
uj5u.com熱心網友回復:
使用reduce,您可以將行分組n
,然后使用一些字串操作和陣列編輯重新組合成您指定的格式
function divide(n) {
var lines = $('#source').val().trim().split(/\n/).slice(0, -1);
let ii = 0, prefix = lines.splice(0, 1)[0], result = [];
let groups = lines.reduce((b, a, i) => {
if (i % n === 0) {
b.push([a]);
ii
} else b[ii].push(a);
return b;
}, [[]]).filter(a => a.length > 0);
groups.forEach((g,i) => {
g.unshift(prefix.replace('ArrayName', `ArrayName_${i}`))
g[g.length-1] = g[g.length-1].slice(0,-1)
g.push("}");
result.push(g.join("\n"));
})
document.getElementById("result").value = result.join("\n\n");
}
divide(3)
textarea {
height: 300px;
width: 400px;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<textarea id="source">
const uint8_t ArrayName [] PROGMEM = {
0xAA, 0xAA, 0xAA, 0xAA, 0xAA,
0xBB, 0xBB, 0xBB, 0xBB, 0xBB,
0xCC, 0xCC, 0xCC, 0xCC, 0xCC,
0xDD, 0xDD, 0xDD, 0xDD, 0xDD,
0xEE, 0xEE, 0xEE, 0xEE, 0xEE,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0x00, 0x00, 0x00, 0x00, 0x00,
0x01, 0x01, 0x01, 0x01, 0x01,
0x22, 0x22, 0x22, 0x22, 0x22,
0x33, 0x33, 0x33, 0x33, 0x33,
};
</textarea>
<textarea id="result"> </textarea>
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/390689.html
標籤:javascript 数组 划分
上一篇:如何驗證所有匹配的括號
下一篇:過濾掉一組設定狀態的專案