Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 无法从for循环中获取预期结果_Javascript - Fatal编程技术网

Javascript 无法从for循环中获取预期结果

Javascript 无法从for循环中获取预期结果,javascript,Javascript,我正在制作一个javascript神经网络,并试图使用for循环将一些条目放入一个对象中,但我没有得到我想要的结果。 我希望能够得到一个如下所示的对象: {0 : {neuron1Sum : null}} 我想循环它来创建多个神经元和层。一旦您看到代码,就可能更容易理解 hiddenLayers : function() { for(var i = 0; i < arguments.length; i++) { numberOfNeurons = argumen

我正在制作一个javascript神经网络,并试图使用for循环将一些条目放入一个对象中,但我没有得到我想要的结果。 我希望能够得到一个如下所示的对象:

{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分钟后,你就可以选择一个被接受的答案,同时,别忘了看看你是否认为其他答案更适用,并对所有你认为有用的答案进行投票。这是一个非常棒的答案,除了我接受的一个答案使对象而不是数组,这是我想要的,而且它有点短。无论如何谢谢你!这正是我想要的:)