9/10 javaScript数组游戏

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


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值