已编辑:
有人可以进一步解决以下问题吗?我有一个班级和一个班级里面的数组。现在,我想使用for循环求和前一次数组长度的总和,但是要进行每次迭代。如果i == 1,我想将arr [0] .x.length的长度求和,如果i == 2,我要对arr [0] .x.length + arr [1] .x.length的长度求和。检查每次迭代将需要大量代码。
有没有简单的方法可以做到这一点?相反,总是使用换行
if (i == 1) n = n + arr[i-1].x.length;
if (i == 2) n = n + arr[i-1].x.length+arr[i-2].x.length;
if (i == 3) n = n + arr[i-1].x.length+arr[i-2].x.length+arr[i-3].x.length;
function Class() {
var x = [];
}
for (var i = 0; i < 9; i++) {
arr[i] = new Class();
}
I add 4 items to each object.
arr[0].x.push(...)
arr[0].x.push(...)
...
arr[1].x.push(...)
arr[1].x.push(...)
...
var n = 0;
for (var i = 0; i < arr.length; i++) {
if (i == 1) {
n = n + arr[i-1].x.length;
} else if (i == 2) {
n = n + arr[i-1].x.length+arr[i-2].x.length;
} else if (i == 3) {
n = n + arr[i-1].x.length+arr[i-2].x.length+arr[i-3].x.length;
}
// ect.
}
答案 0 :(得分:3)
您可以使用reduce
来获得子数组所有长度的总和。例如:
const arrs = [[1,2,3], [4,5,6]];
let sum = arrs.reduce((acc, arr) => acc += arr.length, 0);
console.log(sum);
// 6
答案 1 :(得分:1)
只需嵌套两次循环:遍历索引一次,然后在内部循环中从0开始向上索引:
for (var i = 0; i < arr1.length; i++) {
for(var j = 0; j <= i; j++) {
n = n + arr1[j].length;
}
}
答案 2 :(得分:1)
编辑:benvc的答案就是您要使用reduce的情况。
#!/usr/bin/env python
import socket
sock = socket.socket()
sock.bind(('',3912))
sock.listen(100)
num_cons = 10
cons = []
for i in range(num_cons):
con, addr = sock.accept()
cons.append(con)
while True:
for con in cons:
msg = "a"* 1000
num_sent = con.send(msg.encode())
print("sent: {} bytes of msg:{}".format(str(num_sent), msg))