javascript - 为什么模板字符串中的数组显示为普通字符串?
问题描述
假设我们有一个对象:
var pet = {
"name": "Barky",
"species" : "dog",
"foods": {
"likes": ["bones", "carrots"],
"dislikes": ["tuna"]
}
};
console.log(pet.foods.likes); //returns [ 'bones', 'carrots' ]
console.log(`${pet.foods.likes}`) //returns "bones,carrots"
如果我使用模板字符串,它显示为普通字符串,为什么?
解决方案
在模板文字内部,内部的表达式被隐式强制转换为字符串(因为模板文字总是计算为字符串)。因此,作为插值过程的一部分,该数组.join
由逗号编辑,并成为一个字符串(没有[]
s,并且项目之间没有字符串分隔符)。
console.log(`${pet.foods.likes}`) //returns bones,carrots
相当于
console.log(pet.foods.likes.join(','))
或者
console.log(pet.foods.likes.toString())
相反,plainpet.foods.likes
是一个数组,因此被记录为带有数组分隔符的数组。
推荐阅读
- javascript - 如何使用 jquery 从 Javascript 中提取特定数据字段?
- amazon-web-services - AWS 控制台未列出我的 Elasticsearch 域
- php - 更改 PHP 中的日期格式以包含零
- android - @Parcelize 在多平台项目中
- node.js - 如何使用 Stripe NodeJS SDK 获得更多客户来源?
- ios - Firebase:以匿名模式阻止垃圾邮件用户 - Swift 4
- sql - Django ORM 从日期时间检索月份名称
- javascript - 无法在 gitlab 中使用 sonarqube 加载类错误
- codeigniter - 我的网站说上传 CSV 文件后找不到页面
- shell - 带有变量的 awk-if 有时无法正常工作