在javascript中存储多个数据
我正试图找到一种方法,用javascript将数据存储在某种列表或数组中。我有三个变量,分别是id、left和top。所有都在函数中 id:作为参数传递给函数的元素的索引。 左:在函数内计算 top:在函数内计算 我要寻找的是,每次我用不同的id调用函数时,函数应该能够计算和存储left和top,并以某种方式存储id、left和top,以便我可以在另一个函数调用中访问它们 或者我可以使用对象来使用值吗 功能:在javascript中存储多个数据,javascript,function,object,functional-programming,parameter-passing,Javascript,Function,Object,Functional Programming,Parameter Passing,我正试图找到一种方法,用javascript将数据存储在某种列表或数组中。我有三个变量,分别是id、left和top。所有都在函数中 id:作为参数传递给函数的元素的索引。 左:在函数内计算 top:在函数内计算 我要寻找的是,每次我用不同的id调用函数时,函数应该能够计算和存储left和top,并以某种方式存储id、left和top,以便我可以在另一个函数调用中访问它们 或者我可以使用对象来使用值吗 功能: function getCoordinates(id) { scroll_va
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(){
function incId(data){
var id = data.id;
data.id = id++;
}
function checkId(data){
console.log(data.id);
}
var data = {id:0};
incId(data);
checkId(data);
}());
舒尔您可以使用对象 您可以将对象传递到函数中,如下所示:
(function(){
function incId(data){
var id = data.id;
data.id = id++;
}
function checkId(data){
console.log(data.id);
}
var data = {id:0};
incId(data);
checkId(data);
}());
是的,只需返回一个
对象
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
}
}
而且,为了避免计算两次值,您可以将值存储在其他对象中aCoords
和a2Coords
:
var a1Coords = getCoordinates(a1);
var a2Coords = getCoordinates(a2);
drawAggregate(a1Coords.left, a1Coords.top, a2Coords.left, a2Coords.top);
我假设您的坐标每次都会更改,因此您实际上不想在
getCoordinates
函数中存储坐标,而只是计算并返回它们。是的,只需返回一个对象即可
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
}
}
而且,为了避免计算两次值,您可以将值存储在其他对象中aCoords
和a2Coords
:
var a1Coords = getCoordinates(a1);
var a2Coords = getCoordinates(a2);
drawAggregate(a1Coords.left, a1Coords.top, a2Coords.left, a2Coords.top);
我假设您的坐标每次都会更改,因此您实际上不想在getCoordinates
函数中存储坐标,而只想计算并返回它们。您可以返回一个对象:
function getCoordinates(id)
{
var scroll_value_Y = document.getElementById("svg_editor").scrollTop;
var scroll_value_X = document.getElementById("svg_editor").scrollLeft;
var offset_x = 298;
var offset_y = 102;
var p = $('#' + id);
var offset = p.offset();
return {
left: Math.round(offset.left - offset_x + scroll_value_X),
top : offset.top - offset_y + scroll_value_Y
};
}
var coords1 = getCoordinates(a1);
var coords2 = getCoordinates(a2);
drawAggregate(coords1.left, coords1.top, coords2.left, coords2.top);
您可以返回一个对象:
function getCoordinates(id)
{
var scroll_value_Y = document.getElementById("svg_editor").scrollTop;
var scroll_value_X = document.getElementById("svg_editor").scrollLeft;
var offset_x = 298;
var offset_y = 102;
var p = $('#' + id);
var offset = p.offset();
return {
left: Math.round(offset.left - offset_x + scroll_value_X),
top : offset.top - offset_y + scroll_value_Y
};
}
var coords1 = getCoordinates(a1);
var coords2 = getCoordinates(a2);
drawAggregate(coords1.left, coords1.top, coords2.left, coords2.top);
是的,使用数组var a=[]
和a.push({top:top,left:left})
(将索引视为id)。您可以返回具有这3个属性的json对象。您的json看起来像{id:,left:,top:}
您是在谈论记忆化(比如每个id的坐标仅计算一次)?是的,使用数组var a=[]
和a.push({top:top,left:left})
(将索引视为id)。您可以返回具有这3个属性的json对象。您的json看起来像{id:,left:,top:}
您是在谈论记忆化(比如每个id的坐标是只计算一次)?