我有一个带有几个点的svg贴图,我希望将每个点的初始位置存储在一个数组中。每个点都有自己的ID,如point_1,point_2等。
我已经为每一个附加了一个点击处理程序,并在单击它们时运行一个函数。 所以我想在这个函数中做的是检查数组是否已经包含被点击元素的信息。如果没有,我想创建它。
这就是我想要做的,用伪代码
var arrPoints = [];
zoomToPoint('point_1');
function zoomToPoint(data_id) {
// Does array already contain the data?
if (!arrPoints.data_id) {
// Add data to the array
arrPoints.data_id.clientX = somevalue;
arrPoints.data_id.clientY = somevalue;
}
}
这基本上会创建一个如下所示的数组:
arrPoints.point_1[]
arrPoints.point_2[]
我可以访问每个.point_1和.point_2中的数据。 但我无法基于变量创建数组,如下所示:
arrPoints.data_id = [];
因为我最终将data_id作为实际名称,而不是data_id实际上的变量。那通常如何实现呢?如何识别实际数组的每个点? 对不起,我缺乏基础知识
答案 0 :(得分:2)
只需使用一个对象:
var arrPoints = {};
zoomToPoint('point_1');
function zoomToPoint(data_id) {
// Does array already contain the data?
if (!arrPoints[data_id]) { // square brackets to use `data_id` as index
// Add data to the array
arrPoints[data_id] = {};
arrPoints[data_id].clientX = somevalue;
arrPoints[data_id].clientY = somevalue;
}
}