当我在此函数中提前记录arr时,它具有值(如下所示)。我希望它打印[[null,null],[null,null]];相反,它会打印一旦此函数完成后会产生的arr值。
updateBounds() {
let arr = [Array(2), Array(2)];
console.log('initial value')
console.log(arr);
arr[0][0] = this.state.homePoint.geometry.coordinates[0];
arr[1][0] = this.state.homePoint.geometry.coordinates[0];
arr[0][1] = this.state.homePoint.geometry.coordinates[1];
arr[1][1] = this.state.homePoint.geometry.coordinates[1];
this.state.points.forEach(p => {
if (p.geometry) {
if (p.geometry.coordinates) {
arr[0][0] = Math.min(p.geometry.coordinates[0], arr[0][0]);
arr[1][0] = Math.max(p.geometry.coordinates[0], arr[1][0]);
arr[0][1] = Math.min(p.geometry.coordinates[1], arr[0][1]);
arr[1][1] = Math.max(p.geometry.coordinates[1], arr[1][1]);
}
}
});
this.setState({bounds: arr});
}
结果控制台输出:
initial value
App.js:444 (2) [Array(2), Array(2)]
0: (2) [-122.438227, 37.742017]
1: (2) [-122.40766, 37.784995]
length: 2
__proto__: Array(0)
答案 0 :(得分:4)
这确实有些令人惊讶......问题在于,当您致电log
时,浏览器会记录对象而不记录其内容(在日志调用时)。
如果您想在通话时看到对象内容,请改用console.log(JSON.stringify(x))
。
答案 1 :(得分:1)
Array.splice()返回包含已删除元素的数组。如果仅删除一个元素,则返回一个元素的数组。 如果没有删除任何元素,则返回一个空数组。