我正在嘗試將從 JSON 物件中檢索到的名稱與 google Sheet 中存在的名稱進行比較。盡我所能,我無法得到一個產生積極影響的比較。我試過了:
IndexOf
localeCompare
==
===
我試過
key===value
String(key)===String(value)和
String(key).valueof()=String(value).valueof。我還嘗試呼叫trim()所有內容以確保沒有前導/尾隨空格(沒有,通過length()比較確認。
從螢屏截圖中可以看出,key和的值value完全相同。任何指點將不勝感激。這讓我的專案耽擱了好幾天!
截圖在這里
uj5u.com熱心網友回復:
描述
這不是一個解決方案,但它可能有助于找到問題。也許其中一個或另一個中的角色不是你想象的那樣。從視覺上看,它們是比較的,但是如果有一個制表符而不是空格怎么辦。試試這個,列出每個字符的代碼,看看是否有任何字符有不同的值。
感謝@TheMaster,我添加了另一個消除 for 回圈的選項
腳本(選項 1)
function test() {
try {
let text = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Test").getRange("A1").getValue();
console.log(text);
let code = [];
for( let i=0; i<text.length; i ) {
code.push(text.charCodeAt(i))
}
console.log(code.join());
}
catch(err) {
console.log(err);
}
}
腳本(選項 2)
function test() {
try {
let text = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Test").getRange("A1").getValue();
console.log(text);
let code = [];
[...text].forEach( char => code.push(char.charCodeAt(0)) );
console.log(code.join());
}
catch(err) {
console.log(err);
}
}
執行日志
7:57:53 AM Notice Execution started
7:57:56 AM Info Archie White
7:57:56 AM Info 65,114,99,104,105,101,32,87,104,105,116,101
7:57:54 AM Notice Execution completed
uj5u.com熱心網友回復:
比較
function compare() {
const json = '{"values":[["good","bad","ugly"]]}';
const obj = JSON.parse(json);
const ss = SpreadsheetApp.getActive();
const sh = ss.getSheetByName("Sheet0");
const [hA,...vs] = sh.getDataRange().getDisplayValues();
let matches = [];
vs.forEach((r,i) => {
r.forEach((c,j) => {
let idx = obj.values[0].indexOf(c);
if(~idx) {
matches.push({row:i 1,col:j 1,index: idx});
}
})
})
Logger.log(JSON.stringify(matches))
}
Execution log
9:31:50 AM Notice Execution started
9:31:52 AM Info [{"row":1,"col":1,"index":0},{"row":2,"col":1,"index":1},{"row":3,"col":1,"index":2}]
9:31:51 AM Notice Execution completed
表 1:
| COL1 |
|---|
| 好的 |
| 壞的 |
| 丑陋 |
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/478131.html
標籤:javascript 细绳 谷歌应用脚本 平等
