javascript - 当反转并加入的数组对象的控制台日志返回一个字母时
问题描述
我有一个包含 2 个对象的数组,当反转并加入这个数组并使用第一个或第二个索引控制日志时,返回的字母类似于“j”、“b”
list = [{
name: 'anne',
age: 20,
gender: 'F'
},
{
name: 'david',
age: 50,
gender: 'M'
},
{
name: 'mark',
age: 33,
gender: 'M'
},
]
var val = this.list.slice().reverse().join('');
console.log('val ==> ', val[2]) // val ==> b
这是什么b?
解决方案
因为您正在使用join("")
,所以它调用toString
数组中每个项目的方法 - 它们恰好是对象,并且对象的toString
方法返回[object Object]
:
let obj = {};
console.log(obj.toString());
您可以通过JSON.stringify
首先映射来避免此问题。
var list = [{name:'anne',age:20,gender:'F'},{name:'david',age:50,gender:'M'},{name:'mark',age:33,gender:'M'}];
const res = this.list.slice().reverse().map(JSON.stringify).join('');
console.log("res[2] ===> ", res[2]); //Returns "n" because {"n are the first three characters in the string
console.log(res);
.as-console-wrapper { max-height: 100% !important; top: auto; }
请注意,上面仍然返回一个字符。如果要获取对象,请删除join
and map
:
var list = [{name:'anne',age:20,gender:'F'},{name:'david',age:50,gender:'M'},{name:'mark',age:33,gender:'M'}];
const res = this.list.slice().reverse();
console.log("res[2] ===> ", res[2]); //Returns "n" because {"n are the first three characters in the string
console.log(res);
.as-console-wrapper { max-height: 100% !important; top: auto; }
推荐阅读
- mysql - 在nodejs服务器中使用mysql时如何读取查询返回的结果?
- excel - WEKA 显示我在 ARFF 文件中的第一个变量以字符 
- c++ - 哪个更好,单 for 循环或双 for 循环迭代二维数组?C++
- ios - 在 UITableViewCell 中将图像添加到 UIImageView 会不希望地修改图像视图高度
- python - 为什么即使在成功安装模块后尝试导入 textract 时仍然出现 ModuleNotFoundError?
- python - 使用字典构建匹配系统
- python - opencv创建圈出界
- sql - AND 与 ORDER BY 有什么用?
- r - 如何在 R 的小标题输出中添加换行符?
- mysql - MariaDB 总和大小从表中的 id 到另一个中的 id