Javascript 在主干中的已过滤ID数组上使用.set
我使用了下划线.js的u.filter来获取对象ID数组,如下所示: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
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});
}