我一直在完成对FreeCodeCamp的挑战,偶然发现了这个算法的解决方案.无法理解if else语句如何在这里工作.
function chunkArrayInGroups(arr, size) {
var temp = [];
var result = [];
for (var a = 0; a < arr.length; a++) {
if (a % size !== size - 1)
temp.push(arr[a]);
else {
temp.push(arr[a]);
result.push(temp);
temp = [];
}
}
if (temp.length !== 0)
result.push(temp);
return result;
}
Run Code Online (Sandbox Code Playgroud)
为什么temp = []在else街区尽头?
为什么我们需要reduce在函数末尾将布尔值映射为单个值?
该函数的目的是使用另一个对象(第二个参数)中的对来过滤对象数组key value(第一个参数)。
它应该返回另一个数组,object其中第一个参数中的对象与第二个参数中的key和都匹配value。
例如,如果第一个参数是[{ first: "Romeo", last: "Montague" }, { first: "Mercutio", last: null }, { first: "Tybalt", last: "Capulet" }]
第二个是{ last: "Capulet" }
该函数应该返回[{ first: "Tybalt", last: "Capulet" }]
这是我偶然发现的解决方案,无法理解map() 和reduce()在这里如何工作。
function whatIsInAName(collection, source) {
var srcKeys = Object.keys(source);
return collection.filter(function (obj) {
return srcKeys
.map(function(key) {
return obj.hasOwnProperty(key) && obj[key] === source[key];
})
.reduce(function(a, b) {
return a && …Run Code Online (Sandbox Code Playgroud)