javascript - 在javascript中存储多个数据

标签 javascript function object functional-programming parameter-passing

我正在尝试找出一种在 JavaScript 中将数据存储在某种列表或数组中的方法。我有三个变量,分别称为 id、left 和 top。全部都在函数中

id:作为参数传递给函数的元素的索引。 左:在函数内计算 top:函数内计算

我正在寻找的是每次我用不同的id调用该函数时,该函数应该能够计算和存储left和top,并以某种方式存储id,left和top,以便我可以在另一个函数中访问它们称呼。

或者我可以使用对象来使用这些值吗?

功能:

function getCoordinates(id) {
    scroll_value_Y = document.getElementById("svg_editor").scrollTop;
    scroll_value_X = document.getElementById("svg_editor").scrollLeft;
    offset_x = 298;
    offset_y = 102;
    var p = $('#' + id);
    var offset = p.offset();
    var left = Math.round(offset.left - offset_x + scroll_value_X);
    var top = offset.top - offset_y + scroll_value_Y;
    //something to store
}

在另一个函数调用中使用:

drawAggregate(getCoordinates(a1).left, getCoordinates(a1).top, getCoordinates(a2).left, getCoordinates(a2).top);

或者类似的东西。我该如何实现这个?

最佳答案

是的,只需返回一个对象

function getCoordinates(id) {
    scroll_value_Y = document.getElementById("svg_editor").scrollTop;
    scroll_value_X = document.getElementById("svg_editor").scrollLeft;
    offset_x = 298;
    offset_y = 102;
    var p = $('#' + id);
    var offset = p.offset();
    var left = Math.round(offset.left - offset_x + scroll_value_X);
    var top = offset.top - offset_y + scroll_value_Y;

    // Here we create and return an object with two keys: left and top
    return {
      top: top,
      left: left
    }
}

并且,为了避免两次计算值,您可以将值存储在其他对象 a1Coordsa2Coords 中:

var a1Coords = getCoordinates(a1);
var a2Coords = getCoordinates(a2);

drawAggregate(a1Coords.left, a1Coords.top, a2Coords.left, a2Coords.top);

我假设您的坐标每次都会发生变化,因此您实际上并不希望将坐标存储在 getCooperatives 函数中,而只想计算并返回它们。

关于javascript - 在javascript中存储多个数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37729332/

相关文章:

c - 如何保存 C 函数中读取的变量?

function - 如何在 Scala 中使 lambda 函数通用?

javascript - AngularJS 获得回复

javascript - 从 datetimepicker 时间选择器中的按钮添加小时和分钟

javascript - 水平和垂直滚动

ios - 我的导航 Controller 代码在 swift 中出现问题

javascript - 如何访问其他对象兄弟的值?

javascript - Function 对象和 ES 模块的范围问题

用于封装对象的 C++ 规则三

javascript - 在控制台中显示附加的中间件功能