3/30 下午 Emily 第三堂課,課堂程式片段

課堂附件下載

https://drive.google.com/drive/folders/1eU90aUN_txzhQYf1wdqOe1AnyHpZo7Y_?usp=sharing

請下載這堂課要用到的

  • 10月設備銷售資料明細表.xlsx

範例3-1選出『銷售對象』是『德諾科技』的資料

console.log(input);
input.forEach(element => {
    if(element["銷售對象"]){ // 確認這是一個物件,而不是空值
        if(element["銷售對象"].includes("德諾科技")){
            output.push(element);
        }
    }
});
output.header.push("銷售日期","銷售對象","商品名稱","數量","單價","銷售金額","營業稅","銷售金額合計");
console.log(output);

範例3-2 實作總銷售金額

console.log(input);
let sum = 0;
input.forEach(element => {
    if(element.total_price){
        sum += element.total_price;
    }
});
output["total_price"] = sum;
console.log(output);

範例3-3 將範例1-5的成果,找出各地區溫度,作成表格

let tlist = _.filter(Object.entries(input), function (item){
    return item[0].includes("溫度")
});

console.log(tlist);

tlist.forEach(function (element){
    let array = element[0].split(" ");
    console.log({
        "地區":array[0],
        "溫度":element[1]
    });
    // output.push({
    //     "地區":array[0],
    //     "溫度":element[1]
    // });
});

07期最後在範例3-3中調用子技能範例 1-5 的『溫度』資訊沒有正確抓到的原因

我重新開始一個訓練,用 Google 作天氣搜尋,利用『保存內容』來儲存溫度資訊時,發現這裏用的 CSS selector 如下:

DIV#cnt.e9EfHf > DIV#rcnt.GyAeWb > DIV#center_col.s6JM6d > DIV#res.eqAnXb > DIV#search > DIV > DIV#rso.v7W49e > DIV.ULSxyf > DIV.MjjYud > DIV.KIy09e.obcontainer.wDYxhc > DIV > DIV#wob_wc.nawv0d > DIV.UQt4rd > DIV.Ab33Nc > DIV > DIV.vk_bk.TylWce.SGNhVe > SPAN#wob_tm.wob_t.q8U8x

而先前訓練時用的如下:
HTML > BODY#gsr.srp > DIV#main.main > DIV#cnt.e9EfHf > DIV#rcnt.GyAeWb > DIV#center_col.s6JM6d > DIV#res.eqAnXb > DIV#search > DIV > DIV#rso.v7W49e > DIV.ULSxyf > DIV.KIy09e.obcontainer.wDYxhc > DIV > DIV#wob_wc.nawv0d > DIV.UQt4rd > DIV.Ab33Nc > DIV > DIV.vk_bk.TylWce.SGNhVe > SPAN#wob_tm.wob_t.q8U8x

這兩者已經不太相同。

因此,利用技能『調整』去調整原技能步驟的參數,變更為新的 CSS selector 設定,即可修正此問題。

調整後,執行 ok 沒問題

1 Like

直接複製 3-2 的程式碼去跑,跑出來竟然是"0",不知道為什麼

請教"Emily 第三堂課,課堂程式片段"

3-1 選出『銷售對象』是『德諾科技』的資料

console.log(input);
input.forEach(element => {
if(element[“銷售對象”]){ // 確認這是一個物件,而不是空值
if(element[“銷售對象”].includes(“德諾科技”)){
output.push(element);
}
}
});
output.header.push(“銷售日期”,“銷售對象”,“商品名稱”,“數量”,“單價”,“銷售金額”,“營業稅”,“銷售金額合計”);
console.log(output);

問1. :如果要篩選 includes("德諾科技") 多個條件,應該如何撰寫?
問2. :如果要篩選 element["銷售對象"] 多個條件,應該如何撰寫?

問1. :如果要篩選 includes("德諾科技") 多個條件,應該如何撰寫?

答1: 可以使用 javascript 中的 OR 運算元 ||
例如:
if(element[“銷售對象”].includes(“德諾科技”) || element[“銷售對象”].includes(“三星科技”) ){
output.push(element);
}

問2是要問什麼?可以舉個例子說明一下比較好回答

1 Like

問題已解決

console.log(input);
input.forEach(element => {
if(element[“部門”]){ // 確認這是一個物件,而不是空值
if(element[“部門”].includes(“材料部”)) {
if(element[“Status”]){ // 確認這是一個物件,而不是空值
if(element[“Status”].includes(“Delay”)||element[“Status”].includes(“Urgent”)){
output.push(element);
}
}
}
}
});
output.header.push(“部門”,“姓名”,“Item Due”,“Status”,“需求簡述”,“技術對策項目”,“Item 執行項目”);
console.log(output);

1 Like