[英]wrong conversion of a string to a variable
請協助我知道為什么當我調用一個函數並使用“原始形式”的字符串傳遞參數時,我得到了正確的輸出,但是當我首先將其分配給變量時,卻得到了一個不同的輸出。
我想將CSV字符串轉換為JavaScript數組數組。 當我以原始格式(即console.log(relay('a;b\\nc;d', ';'))
在控制台中傳遞參數時,我得到了正確的結果,它是一個數組,但是當我將字符串轉換為變量dat我得到了錯誤的數組[“;”],這基本上是字符串的第二部分。
relay = (dat, delimiter = ',', tested = false) => dat .split('\\n') .slice(tested ? dat.indexOf('\\n') + 1 : 0); let dat = ('a;b\\nc;d', ';'); console.log(relay(dat)); // [";"] console.log(relay('a;b\\nc;d', ';'));
當我使用dat
變量調用函數時,輸出為[";"]
當我將函數調用為console.log(relay('a;b\\nc;d', ';'))
我得到了正確的輸出["a;b", "c;d"]
我期望的結果是數組[["a;b"], ["c;d"]]
的數組
這條線
let dat = ('a;b\nc;d', ';');
不按照你的想法做。 它使用的是逗號運算符 ,該運算符僅返回其正確的操作數,因此等效於
let data = ';';
您可以為變量分配一個數組,然后在調用中將其傳播。
relay = (dat, delimiter = ',', tested = false) => dat .split('\\n') .slice(tested ? dat.indexOf('\\n') + 1 : 0); let dat = ['a;b\\nc;d', ';']; console.log(relay(...dat)); console.log(relay('a;b\\nc;d', ';'));
function log(s1, s2) {
console.log(s1, s2);
}
let str1 = 'a';
let str2 = 'b';
log(str1, str2); // 'a' 'b'
let str = ('a', 'b');
console.log(str); // 'b'
log(str); // 'b' undefined
請注意,您不能為一個變量分配兩個值,也不能使用它作為參數傳遞給函數。 要實現所需的功能,可以使用兩個變量,一個用於dat
,一個用於delimiter
,使用這兩個變量調用該函數。
let dat = 'a;b\nc;d';
let delimiter = ';';
console.log(relay(dat, delimiter));
另一種方法是使用具有多個屬性的對象,例如
relay = ({ dat, delimiter = ',', tested = false }) => {
dat
.split('\n')
.slice(tested ? dat.indexOf('\n') + 1 : 0);
return dat;
}
let config = {
dat: 'a;b\nc;d',
delimiter: ';'
};
console.log(relay(config));
我注意到默認參數也是通過逗號運算符傳遞的,即字符串沒有作為一個整體傳遞('a; b \\ nc; d',';');
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.