Heim  >  Artikel  >  Web-Frontend  >  Teilen Sie Beispiel-Tutorials für JavaScript-Übungen

Teilen Sie Beispiel-Tutorials für JavaScript-Übungen

零下一度
零下一度Original
2017-06-27 10:22:351488Durchsuche
Willkommen zur Diskussion mit allen~
Grundübungen (1):
Meine Antwort lautet:
function array_diff(a, b) {  if (b == "") return a;  return a.filter(function(item,index,array) {var flag = false;for(var i=0;i<b.length;i++) {      if(item !== b[i]) flag = true;
    }return flag;
  });
}

Die bessere Antwort ist:

function array_diff(a, b) {  return a.filter(function(x) { return b.indexOf(x) == -1; });
}

Analyse:

Verwenden Sie die filter()-Methode für Array a und ermitteln Sie iterativ, ob der Wert in Array a in Array b vorhanden ist. Wenn der Wert von x, also der Wert von Array a, nicht in Array b gefunden werden kann, gibt die Methode b.indexOf() -1 zurück. Die filter()-Methode eines Arrays bezieht sich auf die Ausführung einer bestimmten Funktion für jedes Element im Array und die Rückgabe eines Arrays aus Elementen, für die die Funktion „true“ zurückgibt.
Meine Idee ist etwas kompliziert. Ich habe an die Methode filter() gedacht, um das Array zu iterieren, aber ich habe sie nicht sinnvoll genutzt nicht prägnant genug. Ich hatte nicht erwartet, die Methode indexOf() zu verwenden, um Urteile zu fällen.

Hinweise:

filter()-Methode , ja Bezieht sich auf die Ausführung einer bestimmten Funktion für jedes Element im Array und die Rückgabe eines Arrays von Elementen, für die die Funktion „true“ zurückgibt. Verwendet die angegebene Funktion, um zu bestimmen, ob ein Element im zurückgegebenen Array enthalten ist.
Verwendungsbeispiel:
Var-Nummern = [1,2,3,4,5,4,3 ,2,1];
var filterResult = zahlen.filter (function (item, index, array) {
return (item> 2);
});
alter(filterResult); //[3,4,5,4,3]
Die Array-Iterationsmethode wird sehr häufig verwendet und dient dazu, eine bestimmte Operation auf einem Array in einer Schleife durchzuführen. Diese Iterationsmethoden sind viel einfacher als For-Schleifenanweisungen, also merken Sie sich diese!
Es gibt fünf Iterationsmethoden: every(), filter(), forEach(), map(), some().

Grundübungen (2):

Meine Antwort ist:
var gimme = function (inputArray) {  var newArray = [];  for(var i=0;i<inputArray.length;i++) {
    newArray[i] = inputArray[i];
  }
  newArray.sort(function(a,b) {if(a < b) {      return -1;
    } else if (a> b) {return 1;
    } else {return 0;
    }
  });  return inputArray.indexOf(newArray[1]);
};

Die bessere Antwort ist:

function gimme(a) {  return a.indexOf(a.concat().sort(function(a, b) { return a - b })[1])
}

Analyse:

In der besseren Lösung wird die concat()-Methode für das ursprüngliche Array verwendet, die das ursprüngliche Array kopieren und ein neues Array erstellen kann. Anschließend wird das neue Array sortiert und der Indexwert für den Zwischenwert ermittelt.
Meine Idee entspricht der optimalen Lösung, aber die Umsetzungsmethode ist noch etwas unausgereift. Zum Erstellen eines neuen Arrays weiß ich nicht, ob ich es mit der Methode concat() schnell kopieren kann, was auch zeigt, dass ich mit den Grundkenntnissen nicht ausreichend vertraut bin. Darüber hinaus stellt sich bei der Sortiermethode heraus, dass „return a-b“ direkt verwendet werden kann, meine Methode scheint jedoch sehr umständlich zu sein.

笔记:

concat()方法可基于当前数组中的所有项创建一个新数组。该方法会先创建当前数组的一个副本,将接收到的参数添加到这个副本的末尾,最后返回新构建的数组。在没有给concat()方法传递参数的情况下,它只是复制。若传递给concat()方法的是一个或多个数组,则该方法会将这些数组中的每一项都添加到结果数组中。若传递值不是数组,则添加到结果数组的末尾。
 
使用例子:
var colors = ["red","green","blue"];
var colors = colors.concat("yellow",["black","brown"]);
alert(colors); // red,green,blue
alert(colors); // red,green,blue,yellow,black,brown
 
重排序方法:使用sort()方法可以进行排序,但仍可能会出现一些问题,因此使用比较函数,可以避免这个问题。
对于大多数数据类型可使用,只需要将其作为参数传递给sort()方法即可:
function compare(value1,value2) {
     if(value1 < value2) {
return -1;
} else if (value1> value2) {
          return 1;
     } else {
          returm 0;
     }
}
对于数值型或其他valueOf()方法会返回数值类型的对象类型,可以使用更简单的比较函数:
function compare(value1,value2) {
     return value2 - value1;
}
 
基础练习(3):
 


我的解答为:
function minMax(arr){  var newarr = [];
  newarr.push(Math.min.apply(Math,arr));
  newarr.push(Math.max.apply(Math,arr));  return newarr;
}

较优解答为:

function minMax(arr){  return [Math.min(...arr), Math.max(...arr)];
}

分析:

这道题目就很简单了,较优解答中的扩展语法( spread syntax)也在练习一中提及了。我的写法还是太谨慎了,是不是应该大胆一些呢?
 
基础练习(4):
 


我的解答为:
function XO(str) {   var str = str.toLowerCase();   var countx = 0;   var counto = 0;   for(var i=0;i<str.length;i++) {     if(str[i] === "x") {
       countx++;
     }     if(str[i] === "o") {
       counto++;
     }
    }if(counto == countx) {      return true;
    } else {      return false;
    }
}

较优解答为:

function XO(str) {var a = str.replace(/x/gi, ''),
          b = str.replace(/o/gi, '');return a.length === b.length;
}

分析:

较优解使用的是replace()方法,结合正则表达式的使用,对原字符串str分别将x和o用空字符串替换得到a和b字符串,比较a和b字符串的长度,从而得到结果。我的解答方法呢,因为实在想不到可以使用什么方法,所以用的最原始的方法,仿佛自己在做C语言的题目。
 
笔记:
replace()方法,该方法接受两个参数,一个参数可以是一个RegExp对象或者一个字符串,第二个参数可以是一个字符串或者是一个函数。若第一个参数是字符串,指挥替换第一个子字符串。要想替换所有子字符串,是提供一个正则表达式,并且指定全局标志。
 
使用例子:
var text = "cat,bat,sat,fat";
var result = text.replace("at","ond");
alert(result); //"cond,bat,sat,fat"
 
result = text.replace(/at/g,"ond");
alert(result); //"cond,bond,song,fond"
 
 总结:
今天的知识点主要是数组的迭代方法中的一种filter()方法、数组操作方法中的concat()方法以及字符串的replace()方法。filter()方法可用于使用函数判断数组中各项的值中返回true值的结果所组成的数组。concat()可以复制和创建新数组。而replace()方法可以替换字符串中的一个或多个值。
从这三天的练习来看,对于数组的各种方法也逐渐使用得熟练起来了。但是其他类型的各种方法还是一种挑战。而我的解答也要从比较冗余的语句,写出更为简洁而有效的语句了。继续加油吧!
 
 

Das obige ist der detaillierte Inhalt vonTeilen Sie Beispiel-Tutorials für JavaScript-Übungen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Vorheriger Artikel:JS实现真正的对象常量实例详解Nächster Artikel:jQuery.undelegate()函数的使用详解

In Verbindung stehende Artikel

Mehr sehen