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

Displaying array properties in Safari's console

给定以下片段:

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 库创建的), 所以这些属性对我来说是未知的。

您需要先将其转换为Object

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

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

基于我什至可以去除数字键(这是常见的数组内容)并只记录数组的属性,如果有的话:

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