在Safari的控制台中显示数组属性

时间:2019-10-25 09:28:41

标签: javascript safari console.log

给出以下代码段:

const myArray = ["foo", "bar", "baz"];
myArray.someProperty = "foobar";
console.log(myArray)

在Safari中,它将仅显示以下内容:

["foo", "bar", "baz"] (3)

在其他浏览器(例如Chrome和Firefox)中,它将显示someProperty属性以及length之类的本机属性:

Array(3)
  0: "foo"
  1: "bar"
  2: "baz"
  someProperty: "foobar"
  length: 3

值得一提的是,console.dirconsole.tableconsole.log(JSON.stringify(myArray))之类的内容无法显示这些属性。

在Safari中是否有针对此限制的解决方法?显然我可以做console.log(myArray.someProperty),但是我的主要目标是检查该数组具有哪些属性(我不是创建数组的人,而是由JS库创建的)。这些属性对我来说是未知的。

2 个答案:

答案 0 :(得分:8)

您需要先将其转换为对象

console.log(Object.assign({}, myArray))

它将显示您所有的数组属性

答案 1 :(得分:1)

基于accepted answer,我什至可以剥离数字键(它们是常见的数组内容),并且仅记录数组的属性(如果有):

const myArray = ["foo", "bar", "baz"];
myArray.someProperty = "foobar";
myArray.someOtherProperty = "barbaz";

logArrayProperties(myArray)

function logArrayProperties(arr) {
  Object.entries(Object.assign({}, arr)).forEach(row => {
    if (isNaN(row[0])) console.log(row[0] + ": " + row[1])
  });
};