9/10 javaScript数组游戏

来源:互联网 发布:如何在手机淘宝上卖东西 编辑:程序博客网 时间:2024/06/01 15:10

(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");