學習 Javascript 中的解構賦值以及嘗試在物件解構中使用陣列時,只有第一個字母回傳控制臺,為什么會發生這種情況?
function splitter(name) {
const [fName, lName] = name.split(" ");
return { fName, lName };
}
const {fName: [firstWord],lName} = splitter("John Doe");
console.log(splitter("John Doe"));
console.log({fName: [firstWord],lName});
console.log(firstWord);
console.log(lName);
在此處輸入影像描述
uj5u.com熱心網友回復:
我們先來看一個簡單的例子,你只是在解構陣列
function splitter(name) {
const [fName, lName] = name.split(' ');
return { fName, lName };
}
const { fName, lName } = splitter('John Doe');
console.log(fName); // John
記住
strings在 JS 中是可迭代的
const str = 'John';
for (let c of str) { // For-of can only be used in iterables
console.log(c);
}
所以當你這樣做時
const { fName: [firstWord], lName } = splitter('John Doe');
那么這意味著您也在從fName字串中解構,這將導致firstCharas
所以上面的??完全一樣:
const { fName, lName } = splitter('John Doe');
const [firstChar] = fName;
console.log(firstChar);
function splitter(name) {
const [fName, lName] = name.split(' ');
return { fName, lName };
}
const { fName, lName } = splitter('John Doe');
const [firstChar] = fName;
console.log(firstChar);
uj5u.com熱心網友回復:
發生這種情況是因為splitter回傳 youfName和lName,它們中的每一個都是一個單詞、字串,它是一個字符陣列。
當您重組fName為陣列時,它會為您提供陣列中的第一個字母。
如果您將更多的引數添加到陣列中,您將獲得其余的字母。
要解決您的問題,請不要重組為陣列。
function splitter(name) {
const [fName, lName] = name.split(" ");
return { fName, lName };
}
const {fName: [ch1,ch2,ch3,ch4],lName} = splitter("John Doe");
console.log({fName: [ch1,ch2,ch3,ch4],lName});
const {fName: [char1, ...restOfChars]} = splitter("John Doe");
console.log(char1);
console.log(restOfChars);
const {fName: wholeWord} = splitter("John Doe");
console.log(wholeWord);
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/418666.html
標籤:
