【问题标题】:when console log of array object that been reverse and join that return a letter当反转并加入的数组对象的控制台日志返回一个字母时
【发布时间】:2019-10-12 04:08:53
【问题描述】:

我有一个包含 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

这是什么?

【问题讨论】:

  • 你试过console.log(val)吗?
  • 试试console.log(val)
  • @georg 嗨,是的,它返回了 val ==> [object Object][object Object][object Object]
  • b 只是该字符串的第三个字符。

标签: javascript arrays string object


【解决方案1】:

因为您使用的是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; }

请注意,上面仍然返回一个字符。如果要获取对象,请将joinmap 去掉:

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; }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-10-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-17
    • 2020-06-07
    • 2019-10-06
    • 1970-01-01
    相关资源
    最近更新 更多