我想将每次迭代放入主数组中的数组中。
像这样:array = [[a,b], [c,d], [e,f]]
推送方法和切片,拼接
var descendants = [A,C,C,D,C,B],
chunk = 2,
descendantPairs = [];
for (var i = 0; i < descendants.length; i += chunk) {
descendantPairs = descendantPairs.push(descendants.slice(i, i + chunk));
console.log("descendantPairs: " + descendantPairs});
}
现在我可以得到这样的对,但是我需要对所有对进行更多的逻辑运算,而不仅仅是最后一对,因此我需要一个包含所有对的数组。
我现在在console.log中得到这个:
descendantPairs: A,C
descendantPairs: C,D
descendantPairs: C,B
答案 0 :(得分:2)
push方法返回添加元素的长度,而不是推送元素后的数组。
替换descendantPairs = descendantPairs.push(descendants.slice(i, i + chunk));
与
descendantPairs.push(descendants.slice(i, i + chunk));
答案 1 :(得分:1)
您可以将每个切片推入结果数组,而无需增加数组的新长度。下一个循环将引发错误,因为您的descendantPairs
现在是一个数字,而不是一个数组,这是使用push
方法所必需的。
var descendants = ['A', 'C', 'C', 'D', 'C', 'B'],
chunk = 2,
result = [],
i = 0;
while (i < descendants.length) {
result.push(descendants.slice(i, i += chunk));
}
console.log(result);
答案 2 :(得分:1)
您的代码包含一个问题,您正在使用返回值Array#push
来重新分配descendantPairs
,该方法的值将是数组的长度,并导致在下一次迭代中引发错误(因为存在类型Number
没有推送方法。
要使其正常工作,只需删除重新分配的部分并在for循环之后记录该值。
var descendants = ['A', 'C', 'C', 'D', 'C', 'B'],
chunk = 2,
descendantPairs = [];
for (var i = 0; i < descendants.length; i += chunk) {
descendantPairs.push(descendants.slice(i, i + chunk));
}
console.log("descendantPairs: ", descendantPairs);
答案 3 :(得分:1)
类似这样的方法可以解决问题:
let descendants = ['A', 'C', 'C', 'D', 'C', 'B'];
let chunk = 2;
let result = [];
for (let i = 0; i < descendants.length; i += chunk) {
result.push(descendants.slice(i, i+chunk));
}
console.log(result);
答案 4 :(得分:1)
您可以使用简单的for循环和<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<title>Title</title>
<script src="https://www.gstatic.com/firebasejs/5.9.3/firebase-app.js"></script>
<script src="https://www.gstatic.com/firebasejs/5.9.3/firebase-database.js"></script>
<script src="https://www.gstatic.com/firebasejs/5.9.3/firebase-auth.js"></script>
<script src="https://www.gstatic.com/firebasejs/5.9.3/firebase-functions.js"></script>
<script src="https://www.gstatic.com/firebasejs/5.9.3/firebase-firestore.js"></script>
</head>
<body>
<script>
// Initialize Firebase
var config = {
apiKey: 'xxxxxxxxxxx',
authDomain: 'xxxxxxxxxxx',
databaseURL: 'xxxxxxxxxxx',
projectId: 'xxxxxxxxxxx'
};
firebase.initializeApp(config);
var db = firebase.firestore();
db.doc('testSO/doc1').update({
count1: firebase.firestore.FieldValue.increment(1),
array1: firebase.firestore.FieldValue.arrayUnion('arrayItem'),
object: {
count: firebase.firestore.FieldValue.increment(1),
list: firebase.firestore.FieldValue.arrayUnion({
space_id: 'spaceNbr',
user: {
displayName: 'john doe'
}
})
}
});
</script>
</body>
</html>
变量,并将第二个索引上的值推送到最终输出
temp
答案 5 :(得分:-1)
var arr = ['A','C','C','D','C','B'];
let chunk = 2;
let pairs = [];
for(let i = 0; i < arr.length; i+= chunk) {
pairs.push(arr.slice(i, i + chunk));
}
console.log(pairs);