在下面的示例代碼中,我如何從 "資料 "變數中只過濾出 "狀態 "元素中的 "賣出 "和 "利潤 "元素中超過30%的行,使用 "標準 "變數? 誰能幫我完成這段代碼? 我曾經使用谷歌表格的過濾功能,SpreadsheetApp.new filter criteria().whenNumber...,但是重繪 谷歌表格需要很長時間(5分鐘),因為我的實際應用有3000行和140列需要過濾,需要這么多呼叫。 相反,我學習如何在JavaScript層面上進行過濾操作,期望它能快得多。 然后我就可以將過濾后的資料送回谷歌表格。 謝謝你的幫助!
function test(){
var data = [['產品', '狀態', '價格', '利潤']。
['Apple', 'Hold', 10, '10%'],
['Mango', 'Sell', 20, '20%'] 。
['Orange', 'Buy', 30, '30%']。
['Juice', 'Sell', 40, '40%'],
['咖啡', '出售', 50, '50%']]。
data.splice(0, 1); // remove header.
var criteria = ['', 'Sell', '', '> 30%']。
var filteredData = data;
for (var i = 0; i < criteria.length; i) {
if (criteria[i]) {
filteredData = filteredData.filter(???)。
console.log(filteredData)。
}
}
uj5u.com熱心網友回復:
你可以將所有的標準與它們的列值一起迭代,并檢查值或計算百分比值。
。const
criteria = ['', 'Sell', '', '>30%'] 。
data = [['產品'/span>, '狀態'/span>, '價格'/span>, '利潤'], ['蘋果', '持有', 10, '10%'], ['Mango', 'Sell', 20, '20%'] 。['Orange', 'Buy', 30, '30%'], ['果汁', '銷售', 40, '40%'], ['咖啡', 'Sell', 50, '50%']】。]
結果 = 資料
.slice(1)
.filter(a => criteria。 every((c, i) =>/span> {
if (!c || c === a[i]) return true;
if (c.slice(-1) == '%') return eval(a[i].slice(0, -1) c。 slice(0, -1) )。
}));
console.log(result);
.as-console-wrapper { max-height。100% ! important; top: 0; }
<iframe name="sif1" sandbox="allow-forms allow-modals allow-scripts" class="snippet-box-edit snippet-box-result" frameborder="0"></iframe>
uj5u.com熱心網友回復:
function test(){
var data = [['產品', '狀態', '價格', '利潤']。
['Apple', 'Hold', 10, '10%'],
['Mango', 'Sell', 20, '20%'] 。
['Orange', 'Buy', 30, '30%']。
['Juice', 'Sell', 40, '40%'],
['咖啡', '出售', 50, '50%']]。
data.shift()。
let fdata = data. filter(r => r[1] == 'Sell' & & parseInt(r[3]) > 30)。)
Logger.log(fdata.join('
'))。
}
1: 45: 07 PM Notice Execution started
1: 45: 08 PM info Juice, 銷售,40,40%。
咖啡,銷售,50,50%。
1: 45: 08 PM Notice Execution completed
uj5u.com熱心網友回復:
.filter, .map, .reduce, .forEach和其他類似的函式,
有一些關于你可以傳遞的引數的選項,你可以閱讀更多關于它的內容這里.
對于這個用例,你實際上根本不需要criteria,
你可以簡單地做到:
function test() {
var data = [['產品', '狀態', '價格', '利潤']。
['Apple', 'Hold', 10, '10%'],
['Mango', 'Sell', 20, '20%'] 。
['Orange', 'Buy', 30, '30%'],
['Juice', 'Sell', 40, '40%'],
['咖啡', '出售', 50, '50%']]。
data.splice(0, 1); // remove header.
var filteredData = data;
filteredData = filteredData.filter(currentData => {
if (currentData[1] === 'Sell'/span> & & parseInt(currentData[3] ) > 30) {
return currentData。
}
});
}
這樣做之后,filteredData在這種情況下被填充為'Juice'和'Coffee'陣列,然后你可以用它做任何你需要的事情。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/330541.html
標籤:
