Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.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 在主干中的已过滤ID数组上使用.set_Javascript_Backbone.js_Underscore.js - Fatal编程技术网

Javascript 在主干中的已过滤ID数组上使用.set

Javascript 在主干中的已过滤ID数组上使用.set,javascript,backbone.js,underscore.js,Javascript,Backbone.js,Underscore.js,我使用了下划线.js的u.filter来获取对象ID数组,如下所示: var downstreamMeters = _.filter(that.collection.models, function(item) { return item.get("isdownstreammeter"); }); 现在我想设置数组中每个模型的某个属性。我认为这样做是有意义的: for (var i = 0; i < downstreamMeters.length; i++) { var sum

我使用了下划线.js的u.filter来获取对象ID数组,如下所示:

var downstreamMeters = _.filter(that.collection.models, function(item) { return item.get("isdownstreammeter"); });
现在我想设置数组中每个模型的某个属性。我认为这样做是有意义的:

for (var i = 0; i < downstreamMeters.length; i++) {
    var sum = 0;
    inputMeters = downstreamMeters[i].get("inputmeters");
    for (var i = 0; i < inputMeters.length; i++) {
        var flow = parseFloat(that.collection.get(inputMeters[i]).get("adjustedflow"));
        sum += flow;
    }
    downstreamMeters[i].set({incrementalflow: sum});
}
我检查了Downstreameters数组,它有正确的对象。为数组中的每个模型设置属性需要做什么?

说forvar I=0。。。这有点误导。JavaScript将所有var声明提升到最近的作用域的顶部,for循环不会创建自己的作用域。结果是:

for (var i = 0; i < downstreamMeters.length; i++) {
    var sum = 0;
    inputMeters = downstreamMeters[i].get("inputmeters");
    for (var i = 0; i < inputMeters.length; i++) {
        var flow = parseFloat(that.collection.get(inputMeters[i]).get("adjustedflow"));
        sum += flow;
    }
    downstreamMeters[i].set({incrementalflow: sum});
}

检查下游流量计阵列中是否有任何元素。您所显示的工作正常。这是一些代码。。。以任何方式更改i或下游流量计?@muistooshort似乎我的代码\\导致了问题。我将\\Some代码更新为实际情况,这是一个for循环。在另一个for循环中加入for循环是个坏主意吗?我是JS的新手,我认为它会达到我想要的效果。效果很好,非常感谢!我做了一些调试和输入。长度确实比下游流量计大。长度。@chrishenn:如果不是,你的外循环就永远不会结束。
var i, sum, flow;
for (i = 0; i < downstreamMeters.length; i++) {
    sum = 0;
    inputMeters = downstreamMeters[i].get("inputmeters");
    for (i = 0; i < inputMeters.length; i++) {
        flow = parseFloat(that.collection.get(inputMeters[i]).get("adjustedflow"));
        sum += flow;
    }
    downstreamMeters[i].set({incrementalflow: sum});
}
var i, j, sum, inputMeters;
for (i = 0; i < downstreamMeters.length; i++) {
    sum = 0;
    inputMeters = downstreamMeters[i].get("inputmeters");
    for (j = 0; j < inputMeters.length; j++)
        sum += parseFloat(that.collection.get(inputMeters[j]).get("adjustedflow"));
    downstreamMeters[i].set({incrementalflow: sum});
}