Javascript 无法从for循环中获取预期结果
我正在制作一个javascript神经网络,并试图使用for循环将一些条目放入一个对象中,但我没有得到我想要的结果。 我希望能够得到一个如下所示的对象:Javascript 无法从for循环中获取预期结果,javascript,Javascript,我正在制作一个javascript神经网络,并试图使用for循环将一些条目放入一个对象中,但我没有得到我想要的结果。 我希望能够得到一个如下所示的对象: {0 : {neuron1Sum : null}} 我想循环它来创建多个神经元和层。一旦您看到代码,就可能更容易理解 hiddenLayers : function() { for(var i = 0; i < arguments.length; i++) { numberOfNeurons = argumen
{0 : {neuron1Sum : null}}
我想循环它来创建多个神经元和层。一旦您看到代码,就可能更容易理解
hiddenLayers : function() {
for(var i = 0; i < arguments.length; i++) {
numberOfNeurons = arguments[i];
hiddenLayer = {};
for (var j = 0; j < numberOfNeurons - 1; j++) {
hiddenLayer[i] = ["neuron" + j + "Sum"];
hiddenLayer[i]["neuron" + j + "Sum"] = null;
}
}
},
hiddenLayers:function(){
for(var i=0;i
看起来您需要在内部循环之前移动两个标识符并初始化一个数组
// ...
hiddenLayers: function() {
var numberOfNeurons,
hiddenLayer = [], // keep this across all the loops
temp, // to store objects as we make them
i, j;
for (i = 0; i < arguments.length; ++i) {
numberOfNeurons = arguments[i];
hiddenLayer[i] = []; // remember to initialise
for (j = 0; j < numberOfNeurons - 1; ++j) {
temp = {};
temp["neuron" + j + "Sum"] = null;
hiddenLayer[i].push(temp);
}
}
return hiddenLayer; // remember to return
},
// ...
从ES6开始,我们将能够在对象文本的属性名称中使用表达式,例如
如果您想让您的代码立即在生产环境中运行,请不要使用此功能(可能在一两年内)我认为该代码并不是您想要的,但我不确定您想要什么 本任务:
hiddenLayer[i] = ["neuron" + j + "Sum"];
hiddenLayer[i]["neuron" + j + "Sum"] = null;
将hiddenLayer[i]
设置为包含单个字符串的数组。这相当于:
hiddenLayer[i] = [];
hiddenLayer[i][0] = "neuron" + j + "Sum";
那么这个任务:
hiddenLayer[i] = ["neuron" + j + "Sum"];
hiddenLayer[i]["neuron" + j + "Sum"] = null;
将hiddenLayer[i]
视为通用对象(关联数组、映射、哈希、字典),并将命名属性(与该字符串同名)设置为null
。因此,如果i
为0,而j
为0,则得到一个如下所示的对象:
{
0: "neuron0Sum",
neuron0Sum: null
}
我怀疑这不是您想要实现的…您的
hiddenLayer
应定义为数组,而hiddenLayer[I]
应定义为对象。然后像这样将每个元素放置到对象
hiddenLayers : function() {
var hiddenLayer = []; // defined as array
for(var i = 0; i < arguments.length; i++) {
numberOfNeurons = arguments[i];
hiddenLayer[i] = {}; //defined as object
for (var j = 0; j < numberOfNeurons - 1; j++) {
hiddenLayer[i]["neuron" + j + "Sum"] = null;
}
}
return hiddenLayer;
/*
will return something like :
[
0 : {neuron1Sum : null, neuron2Sum : null},
1 : {neuron1Sum : null, neuron2Sum : null}
]
*/
},
hiddenLayers:function(){
var hiddenLayer=[];//定义为数组
for(var i=0;i
你得到了什么结果?@MattBall我得到了{2:{neuron1Sum:null},仅此而已。它没有填充其余部分。只需一个小指针,就可以使用参数.map
而不是外部循环。我在表示hiddenLayer[I]的行中得到“+”的意外标记错误。push({“neuron”+j+“Sum”:null})@Iceclaw12请查看代码是否符合要求:)非常感谢!它工作得很好。我如何接受你的答案?问题提出15分钟后,你就可以选择一个被接受的答案,同时,别忘了看看你是否认为其他答案更适用,并对所有你认为有用的答案进行投票。这是一个非常棒的答案,除了我接受的一个答案使对象而不是数组,这是我想要的,而且它有点短。无论如何谢谢你!这正是我想要的:)