如何在JavaScript中访问和存储对象数组

如何在JavaScript中访问和存储对象数组,javascript,arrays,Javascript,Arrays,我将这些对象存储在数组中: var current = [{1:{X:"",Y:""},2:{X:"",Y:""},3:{X:"",Y:""}}, {1:{X:"",Y:""},2:{X:"",Y:""},3:{X:"",Y:""}}, {1:{X:"",Y:""},2:{X:"",Y:""},3:{X:"",Y:""}} ]; 我想要的是动态存储它们,并在函数中传递objects值后动态访问它们 function getXAx

我将这些对象存储在数组中:

var current = [{1:{X:"",Y:""},2:{X:"",Y:""},3:{X:"",Y:""}},
           {1:{X:"",Y:""},2:{X:"",Y:""},3:{X:"",Y:""}},
           {1:{X:"",Y:""},2:{X:"",Y:""},3:{X:"",Y:""}}
           ];
我想要的是动态存储它们,并在函数中传递objects值后动态访问它们

function getXAxis(num){
//any
}

function getYAxis(num){
//any
}

trial1a.X = getXAxis(current[0][1].X);
trial1a.Y = getYAxis(current[0][1].Y);
trial2a.X = getXAxis(current[0][2].X);
trial2a.Y = getYAxis(current[0][2].Y);
trial3a.X = getXAxis(current[0][3].X);
trial3a.Y = getYAxis(current[0][3].Y);
trial1b.X = getXAxis(current[1][1].X);
trial1b.Y = getYAxis(current[1][1].Y);

访问当前的值并动态存储它们的最佳方法是什么

我认为您想要的是动态生成您的试用版

像这样的东西可以满足您的需求:

var trials = [];
for (var i = 0; i < current.length; i++) {
    trials[i] = {};
    for (var j in current[i]) {
        trials[i][j] = {
            X: getXAxis(current[i][j].X),
            Y: getYAxis(current[i][j].Y)
        };
    }
}
var试验=[];
对于(变量i=0;i
我想我知道你在找什么

var root = {};
function setValueInDeepStructure(value, path, tree) {  
  var thisStep = path.shift();
  if (path.length == 0) {
    tree[thisStep] = value;
  } else {
    if (!tree[thisStep]) {
      tree[thisStep] = {};
    }

    setValueInDeepStructure(value, path, tree[thisStep]);
  }
}

function getValueFromDeepStructure(path, tree) {
  var thisStep = path.shift();
  if (path.length == 0)
    return tree[thisStep];
  else
    return getValueFromDeepStructure(path, tree[thisStep]);
}

setValueInDeepStructure({x: 3, y: 5}, [0,1,5,6], root);
setValueInDeepStructure(7, [0,1,5,6,'x'], root);

getValueFromDeepStructure([0,1,5,6], root) // => {x:7, y:5}

我不清楚问题是什么。您已经在访问当前
中的值。请注意,在您的定义中,您使用的是大写
“X”
“Y”
,但在尝试查找时,您使用的是较低的
“X”
“Y”
@FelixKling。我正在访问它们,但不是动态的。然后使用变量,而不是任何数字。例如,
current[i]
,其中
i
从何处获取其值。这就是你想要的吗?如果您曾经使用
for
循环迭代数组,您知道如何“动态”访问数组。关于添加:。使用普通
for
循环迭代数组。
for。。。在
中也适用于数组,但有所改变,无论什么是试验[i]=试验[i]|{};对于?@ThomasM.-这是索引的初始化-确保在我们设置
trials[i][j]
时,在访问索引之前在trials数组中设置索引。如果您不初始化它,JS将抛出一个错误。@ThomasM.-考虑它时,不需要条件。将其更改为仅将索引设置为对象。