在 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.dir
、console.table
或 console.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])
});
};
给定以下片段:
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.dir
、console.table
或 console.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])
});
};