(1)我们会传递给你一个包含两个数字的数组。返回这两个数字和它们之间所有数字的和。(最小的数字并非总在最前面。)
function sumAll(arr) {
var a=Math.max.apply(null, arr);
var b=Math.min.apply(null, arr);
var c=[];
for(var i=0;b<a+1;i++)
{
c[i]=b;
b++;
}
var sum = c.reduce(function (a, b){return a + b;}, 0);
return sum;
}
sumAll([1, 4]);
(2)比较两个数组,然后返回一个新数组,该数组的元素为两个给定数组中所有独有的数组元素。换言之,返回两个数组的差异。
function diff(arr1, arr2) {
var newArr = [];
var arr3 = [];
for (var i=0;i<arr1.length;i++) {
if(arr2.indexOf(arr1[i]) === -1)
arr3.push(arr1[i]);
}
var arr4 = [];
for (var j=0;j<arr2.length;j++) {
if(arr1.indexOf(arr2[j]) === -1)
arr4.push(arr2[j]);
}
newArr = arr3.concat(arr4);
return newArr;
}
diff([1, 2, 3, 5], [1, 2, 3, 4, 5]);
(3)写一个 function,它遍历一个对象数组(第一个参数)并返回一个包含相匹配的属性-值对(第二个参数)的所有对象的数组。如果返回的数组中包含 source 对象的属性-值对,那么此对象的每一个属性-值对都必须存在于 collection 的对象中。
function where(collection, source) {
var arr = [];
var a=0;
var b=0;
for(var i=0;i<collection.length;i++){
for(var j=0;j<Object.keys(source).length;j++){
if(collection[i].hasOwnProperty(Object.keys(source)[j])){
if(collection[i][Object.keys(source)[j]]!=source[Object.keys(source)[j]]){
a=1;
}
}else{
b=1;
}
}
if(a==0&&b!=1){
arr.push(collection[i]);
}
a=0;
b=0;
}
return arr;
}
where([{ "a": 1, "b": 2 }, { "a": 1 }, { "a": 1, "b": 2, "c": 2 }], { "a": 1, "c": 2 });
以下是别人的代码:
function where(collection, source) {
var arr = [];
var arrSource=Object.keys(source);//把source的属性转化为数组
// What's in a name?
var i='',j=0;
for(i in collection){//循环collection的元素
var count=0;
for(j=0;j<arrSource.length;j++){//针对source的属性进行循环,查找这个collection元素中是否有指定的source的属性
if(collection[i][arrSource[j]]&&source[arrSource[j]]==collection[i][arrSource[j]]){
count++;
}
}
//判断:如果完全包含,这个collection的元素就被允许添加到里边。
if(count==arrSource.length){
arr.push(collection[i]);
}
}
return arr;
}
感悟:(在此期间对象定义错误是很要命的)编程时首先要保证不出错,然后保证逻辑正确。建议用一种方法把对象都描述出来。
使用给定的参数对句子执行一次查找和替换,然后返回新句子。
第一个参数是将要对其执行查找和替换的句子。
第二个参数是将被替换掉的单词(替换前的单词)。
第三个参数用于替换第二个参数(替换后的单词)。
注意:替换时保持原单词的大小写。例如,如果你想用单词 "dog" 替换单词 "Book" ,你应该替换成 "Dog"。
function myReplace(str, before, after) {
var c;
if(/[A-Z]/.test(after[0])!=/[A-Z]/.test(before[0])){
if(/[A-Z]/.test(before[0]))
{c=after.replace(after[0],after[0].toUpperCase());}
else
{c=after.replace(after[0],after[0].toLowerCase());}
}else{ c=after;}
var d=str.replace(before,c);
return d;
}
myReplace("A quick brown fox jumped over the lazy dog", "jumped", "leaped");