[英]Prefixing a String to an array vs Prefixing a string to an array of objects - React/JS
為什么使用以下聲明和賦值
const num = [1,2,3,4,5];
這是允許的嗎?會給 [1,2,3,4,5] "Jello"
console.log(num + "Jello");
但是通過以下聲明和賦值
const num = { Flavour: "Apple" };
這不會給你蘋果“果凍”
console.log(num + "Jello");
(注意:下面鏈接到 MDN 上的頁面,最初是作為 Mozilla 瀏覽器中 JS 的文檔,但現在適用於此之外。)
首先,要讓a + b
返回一個合理的結果, a
和b
應該是同一類型。 如果它們是不同的類型,則必須將它們強制轉換為相同的類型(另請參閱 ECMAScript 2021,第 7.1 節“類型轉換” )。
此外, 加法運算符僅適用於兩種類型:數字和字符串(另請參閱 ECMAScript 2021,第 13.8 節“加法運算符” )。 基本上,如果操作數不是兩個數字,那么基本上通過調用它們的toString()
方法將它們強制轉換為字符串( 確切的過程稍微復雜一點,並考慮原語,例如null
,它們不有一個toString
方法)。
對於 arrays, Array.prototype.toString
將在每個元素上調用toString()
並用逗號連接結果(它的內容在Array.prototype.join的規范中定義)。 更通用的Object.prototype.toString
對於 object 文字,將只返回'[object Object]'
。 該值來自Object.prototype.toString的規范,格式為`[object ${Tag}]`
,其中Tag
是表示 object 的內置類型的字符串。
要獲取包含 object 表示的字符串,您需要使用類似JSON.stringify
:
JSON.stringify({ Flavour: "Apple" }) + ' Jello'
如果你只想要值,而 object 是平面的(即沒有值本身是對象),你可以使用Object.values
:
Object.values({ Cost: "Cheap", Flavour: "Apple" }) + 'Jello'
如果你想用逗號以外的東西連接值,用分隔符顯式調用join
:
Object.values({ Cost: "Cheap", Flavour: "Apple" }).join(' ') + ' Jello'
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.