請幫我解決以下字串/陣列混亂。
異步函式回傳以下內容
['0 0 0.33 0.019 0 0 0.173 0.009','0 0.133 0 0 0 0 0 0.05','0.1 0.11 0.5 0 0 0 0 0.333','完成']
如何找到每個字串的數字的平均值以及如何將每個字串的數字推送到它自己的 html 表中?
我嘗試了一些 .toString().split() 方法和下面的回圈的組合,但沒有得到任何地方
const parametersOfCRWs = await getCRWs(idle, "worker:1");
let splits = parametersOfCRWs.toString().split(",");
let arr = "";
let sum = 0;
let count = 0;
for (let i = 0; i < splits.length-1; i ) {
arr = splits[i].split(" ");
for (let j = 0; j < arr.length; j ) {
sum = sum Number(arr[j]);
console.log(arr[i]);
}
avg = sum / 8; //always 8 numbers in every string
console.log(avg);
結果平均數是錯誤的
uj5u.com熱心網友回復:
您可以執行以下操作:(首先獲取您自己的資料,此資料變數只是一個示例)
let data = [ "0 0 0.33 0.019 0 0 0.173 0.009", "0 0.133 0 0 0 0 0 0.05", "0.1 0.11 0.5 0 0 0 0 0.333", "COMPLETE" ]
data = data.map(e=> {
if(e !== 'COMPLETE') {
let average = 0
v = e.split(' ')
v.forEach(r => {average =Number(r)})
average = average/v.length
return average
} else {
return 'COMPLETE'
}
})
輸出:
[ 0.066375, 0.022875, 0.130375, "COMPLETE" ]
uj5u.com熱心網友回復:
以下代碼將為您提供一個新陣列,其中包含每個條目中所有數字的平均值。
const validEntries = parametersOfCRWs.reduce((memo, entry) => {
const numbers = entry.split(/\s /);
if (numbers.length !== 8) {
// skip this entry (like "COMPLETE")
return memo;
}
memo.push(numbers.map((n) => Number(n)));
return memo
}, []);
const averages = validEntries.map((numbers) => numbers.reduce((a, b) => a b));
console.log(validEntries, averages);
這基本上假設parametersOfCRWs是一個實際的 javascript 陣列。所以toString().split(",")我們不是像陣列一樣使用它。
對于每個條目,我們用空格分割字串。如果它沒有 8 個條目(如“COMPLETE”),那么我們跳過它。
如果是這樣,我們將每個元素轉換為一個數字,以便我們計算平均值。
uj5u.com熱心網友回復:
您可以拆分字串,添加所有值并獲取映射結果。
const
data = ['0 0 0.33 0.019 0 0 0.173 0.009', '0 0.133 0 0 0 0 0 0.05', '0.1 0.11 0.5 0 0 0 0 0.333', 'COMPLETE'],
result = data.map(s => {
if (s === 'COMPLETE') return s;
return s.split(' ').reduce((s, v) => s v, 0) / 8;
});
console.log(result);
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/453603.html
標籤:javascript 节点.js 数组
上一篇:讀取檔案并回傳某些行的計數
