如何在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.-考虑它时,不需要条件。将其更改为仅将索引设置为对象。