手書きするのは難しいので、もし役に立ったら、無料でいいねをお願いします૮₍♡>..< ₎ა
1. JavaScript 配列の toString() メソッド
定義と使用法
toString()
このメソッドは、すべての配列値をカンマで区切って含む文字列を返します。
注:toString()
このメソッドは元の配列を変更しません。
パラメータ
パラメータはありません。
ネイティブjsの手書き実装:
var arr = [12, 15, 25, 36, 88]
var arr1 = [16]
var arr2 = ["ni","hao","jian","jian"]
Array.prototype.newtoString = function (str) { //与join方法类似
var string = '';
if (this.length == 1) {
return string + this[this.length - 1]
} else {
string += this[0]
for (var i = 1; i < this.length; i++) {
string += (',' + this[i])
}
return string
}
}
var str = arr.newtoString();
console.log(str);
console.log(arr1.newtoString());
console.log(arr2.newtoString());
二.JavaScript Array includes() 方法
定義と使用法
includes()
このメソッドは、配列に指定された要素が含まれているかどうかを判断します。
このメソッドは、配列に要素が含まれている場合は を返し、true
それ以外の場合は を返しますfalse
。
注:includes()
メソッドでは大文字と小文字が区別されます。
パラメータ値
パラメータ | 説明する |
---|---|
要素 | 必須。検索する要素。 |
始める | オプション。デフォルトは 0 です。配列内のどの位置で検索を開始するか。 |
ネイティブjsの手書き実装:
var arr = [12, 15, 25, 36, 88]
var arr1 = [16]
var arr2 = ["ni", "hao", "jian", "jian"]
Array.prototype.newIncludes=function(str,start){
var startIndex=0;
if(start){
if(start<0){
startIndex=this.length+start;
}else{
startIndex=start;
}
}
for(var i=startIndex;i<this.length;i++){ //循环遍历数组,检索符合条件的值
if(this[i]===str){ //进行判断是否相等
return true
}
}
return false
}
console.log(arr.newIncludes(25,3));
console.log(arr.newIncludes(22));
console.log(arr2.newIncludes('ni'));
console.log(arr2.newIncludes('NI'));
3. JavaScript 配列 valueOf() メソッド
定義と使用法
valueOf()
メソッドは配列を返します。
valueOf()
メソッドは配列オブジェクトのデフォルトのメソッドです。
注:valueOf()
このメソッドは元の配列を変更しません。
パラメータ
パラメータはありません。
ネイティブjsの手書き実装:
var arr = [12, 15, 25, 36, 88]
var arr1 = ["ni", "hao", "jian", "jian"]
Array.prototype.newValueOf=function(){
//错误示例
// var newarr=this;
//正确示例
var newarr=[];
for(var i=0;i<this.length;i++){
newarr[i]=this[i];
}
return newarr;
}
console.log(arr.newValueOf());
console.log(arr1.newValueOf());
4. JavaScript 配列 unshift() メソッド
定義と使用法
unshift()
このメソッドは、配列の先頭に新しい項目を追加し、新しい長さを返します。
注:unshift()
このメソッドは配列の長さを変更します。
ヒント: 配列の末尾に新しい項目を追加するには、push()
メソッドを使用します。
パラメータ値
パラメータ | 説明する |
---|---|
アイテム1、アイテム2、...、アイテムX | 必須。配列の先頭に追加する項目。 |
ネイティブjsの手書き実装:
var arr = [12, 15, 25, 36, 88]
var arr1 = [16]
var arr2 = ["ni", "hao", "jian", "jian"]
Array.prototype.newUnshift=function(){
//记录一下长度,防止后期数组变化时不受影响
var arrlen=this.length;
var arglen=arguments.length;
//创建一个临时数组去存储之前数组中的值
var newarr=[];
for(var i=0;i<this.length;i++){
newarr[i]=this[i];
}
//将数组中的值进行从新赋值
for(var i=0;i<arrlen+arglen;i++){
if(i<arglen){
this[i]=arguments[i]; //判断是否将传来的值全部插入数组前完毕
}else{
this[i]=newarr[i-arglen]
}
}
}
arr.newUnshift();
console.log(arr);
arr.newUnshift("16",14)
console.log(arr);
5. JavaScript 配列の fill() メソッド
定義と使用法
fill()
このメソッドは、配列内の指定された要素に静的な値を埋めます。
パディングの開始位置と終了位置を指定できます。指定しない場合は、すべての要素が埋められます。
注:fill()
元の配列は上書きされます。
パラメータ値
パラメータ | 説明する |
---|---|
価値 | 必須。配列に値を設定するために使用される値。 |
始める | オプション。配列への埋め込みを開始するインデックス (デフォルトは 0)。 |
終わり | オプション。配列への充填を停止するインデックス (デフォルトは array.length)。 |
ネイティブjsの手書き実装:
var arr = [12, 15, 25, 36, 88]
var arr1 = [16]
var arr2 = ["ni", "hao", "jian", "jian"]
Array.prototype.newFill=function(val,start,end){
var startIndex=0;
var endIndex=this.length;
if(start){
startIndex=start;
}
if(end){
endIndex=end;
}
for(var i=startIndex;i<endIndex;i++){
this[i]=val;
}
}
arr.newFill('ha',1,5)
console.log(arr);
6. JavaScript 配列 concat() メソッド
定義と使用法
concat()
2 つ以上の配列を連結するために使用されるメソッド。
concat()
このメソッドは既存の配列を変更せず、連結された配列の値を含む新しい配列を返します。
パラメータ値
パラメータ | 説明する |
---|---|
配列2、配列3、...、配列X | 必須。連結される配列。 |
ネイティブjsの手書き実装:
var arr = [12, 15, 25, 36, 88]
var arr1 = [16]
var arr2 = ["ni", "hao", "jian", "jian"]
Array.prototype.newConcat = function () {
//创建一个临时数组去存储之前数组中的值
var newarr = [];
for (var i = 0; i < this.length; i++) {
newarr[i] = this[i];
}
for(let i=0;i<arguments.length;i++){ //循环遍历次数等于传递的参数的个数
var arrdeslen=newarr.length; //每次循环重新获取一下新数组的长度
for(var j=0;j<arguments[i].length;j++){ //循环遍历次数等于获取每一个参数的数组长度
newarr[arrdeslen+j]=arguments[i][j] //在新数组后面接上传递过来的参数数组
}
}
return newarr;
}
var newarr=arr.newConcat(arr1,arr2)
console.log(newarr);
7. JavaScript Array map() メソッド
定義と使用法
map()
このメソッドは、配列要素ごとに関数を呼び出した結果を使用して新しい配列を作成します。
map()
メソッドは、配列内の要素ごとに指定された関数を 1 回ずつ順番に呼び出します。
注:map()
この関数は、値のない配列要素に対しては実行されません。
注:map()
元の配列は変更されません。
パラメータ値
パラメータ | 説明する | ||||||||
---|---|---|---|---|---|---|---|---|---|
関数( currentValue ,インデックス, arr ) | 必須。配列内の各要素に対して関数が実行されます。 関数パラメータ:
|
||||||||
この値 | オプション。「this」値として使用するために関数に渡される値。 このパラメータが空の場合、値「未定義」が「this」値として渡されます。 |
ネイティブjsの手書き実装:
var arr = [12, 15, 25, 36, 88]
var arr2 = ["ni", "hao", "jian", "jian"]
Array.prototype.newMap = function (fun) {
var newarr=[];
for(var i=0;i<this.length;i++){ //循环遍历,遍历到数组中每一个数值
newarr[i]= fun(this[i]) //将经过函数作用过的值传递给新数组
}
return newarr //将新数组返回
}
function test(val){ //测试函数
return val*2
}
console.log(arr.newMap(test));
8. JavaScript 配列の filter() メソッド
定義と使用法
filter()
このメソッドは、テストに合格したすべての配列要素が入力された配列を作成します (関数として提供されます)。
注:filter()
この関数は、値を持たない配列要素に対しては実行されません。
注:filter()
元の配列は変更されません。
パラメータ値
パラメータ | 説明する | ||||||||
---|---|---|---|---|---|---|---|---|---|
関数( currentValue ,インデックス, arr ) | 必須。配列内の各要素に対して関数が実行されます。 関数パラメータ:
|
||||||||
この値 | オプション。「this」値として使用するために関数に渡される値。 このパラメータが空の場合、値「未定義」が「this」値として渡されます。 |
ネイティブjsの手書き実装:
var arr = [12, 25, 15, 36, 88]
var arr2 = ["ni", "hao", "jian", "jian"]
Array.prototype.newFilter = function (fun) {
var newarr=[];
for(var i=0,j=0;i<this.length;i++,j++){ //循环遍历,遍历到数组中每一个数值 //新数组索引加一
if(fun(this[i])){ //判断是否满足条件
newarr[j]=this[i]; //满足条件的赋值给新数组
}
}
return newarr //将新数组返回
}
function test(val){ //测试函数
return val>15
}
console.log(arr.newFilter(test));
9. JavaScript 配列の forEach() メソッド
定義と使用法
forEach()
このメソッドは、配列内の各要素に対して関数を 1 回ずつ順番に呼び出します。
注: このメソッドは、 value を持たない配列要素に対しては実行されませんforEach()
。
パラメータ値
パラメータ | 説明する | ||||||||
---|---|---|---|---|---|---|---|---|---|
関数( currentValue ,インデックス, arr ) | 必須。配列内の各要素に対して関数が実行されます。 関数パラメータ:
|
||||||||
この値 | オプション。「this」値として使用するために関数に渡される値。 このパラメータが空の場合、値「未定義」が「this」値として渡されます。 |
ネイティブjsの手書き実装:
var arr = [12, 15, 25, 36, 88]
var arr2 = ["ni", "hao", "jian", "jian"]
Array.prototype.newForeach = function (fun) {
for(var i=0;i<this.length;i++){ //循环遍历,遍历到数组中每一个数值
this[i]= fun(this[i]) //将经过函数作用过的值传递给数组
}
}
function test(val){ //测试函数
return val*2
}
var sum=0;
function myFunction(item) {
sum += item;
}
arr.newForeach(myFunction)
console.log(sum);
arr.newForeach(test)//证明Foreach方法会改变原数组导致发生错误
console.log(arr);
10. JavaScript 配列のreduce()メソッド
定義と使用法
reduce()
メソッドは配列を単一の値に削減します。
reduce()
メソッドは、配列の各値に対して (左から右に) 提供された関数を実行します。
関数の戻り値はアキュムレータ (結果/合計) に格納されます。
注: このメソッドは、値のない配列要素に対しては実行されませんreduce()
。
注释:reduce()
方法不会改变原始数组。
参数值
参数 | 描述 | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
function(total, currentValue, index, arr) | 必需。为数组中的每个元素运行的函数。 函数参数:
|
||||||||||
initialValue | 可选。作为初始值传递给函数的值。 |
原生js手写实现:
var arr = [12.5, 15.6, 25, 36, 88]
var arr1 = [16]
var arr2 = ["ni", "hao", "jian", "jian"]
Array.prototype.newReduce = function (fun) {
var first = this[0];
for (var i = 1; i < this.length; i++) {
var first=fun(first, this[i])
}
return first
}
function myFunc(total, num) {
return total - num;
}
function getSum(total, num) {
return total + Math.round(num);
}
console.log( arr.newReduce(myFunc));
console.log(arr.newReduce(getSum));
十一.JavaScript Array reduceRight() 方法
定义和用法
reduceRight()
方法将数组缩减为单个值。
reduceRight()
方法为数组的每个值(从右到左)执行提供的函数。
函数的返回值存储在累加器中(结果/总计)。
注释:对没有值的数组元素,不执行 reduceRight()
方法。
参数值
参数 | 描述 | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
function(total, currentValue, index, arr) | 必需。为数组中的每个元素运行的函数。 函数参数:
|
||||||||||
initialValue | 可选。作为初始值传递给函数的值。 |
原生js手写实现:
var arr = [12, 156, 25, 36, 88]
var arr1 = [16]
var arr2 = ["ni", "hao", "jian", "jian"]
Array.prototype.newReduceRight = function (fun) {
var first = this[this.length-1];
for (var i = 0; i < this.length-1; i++) {
var first = fun(first, this[i])
}
return first
}
function myFunc(total, num) {
return total - num;
}
console.log(arr.newReduceRight(myFunc));
十二.JavaScript Array indexOf() 方法
定义和用法
indexOf()
方法在数组中搜索指定项目,并返回其位置。
搜索将从指定位置开始,如果未指定开始位置,则从头开始,并在数组末尾结束搜索。
如果未找到该项目,则 indexOf()
返回 -1。
如果该项目出现多次,则 indexOf()
方法返回第一次出现的位置。
注释:第一项的位置为 0,第二项的位置为 1,依此类推。
提示:如果您想从尾到头搜索,请使用 lastIndexOf()
方法。
参数值
参数 | 描述 |
---|---|
item | 必需。要搜索的项目。 |
start | 可选。从哪里开始搜索。负值给定的位置将从结尾计数,然后搜索到最后。 |
原生js手写实现:
var arr = [12, 15, 25, 36, 88]
var arr1 = [16]
var arr2 = ["ni", "hao", "jian", "jian"]
Array.prototype.newIndexOf=function(item,start){
var startIndex=0;
if(start){
if(start<0){
startIndex=this.length+start;
}else{
startIndex=start;
}
}
for(var i=startIndex;i<this.length;i++){
if(item===this[i]){
return i;
}
}
return -1;
}
console.log( arr.newIndexOf(36,4));
console.log( arr2.newIndexOf('jian'));
console.log( arr2.newIndexOf('jian',3));
十三.JavaScript Array lastIndexOf() 方法
定义和用法
lastIndexOf()
方法在数组中搜索指定项目,并返回其位置。
搜索将从指定位置开始,如果未指定开始位置,则从末尾开始,并在数组的开头结束搜索。
如果未找到该项目,则 lastIndexOf()
方法返回 -1。
如果要搜索的项目不止一次出现,lastIndexOf()
方法将返回最后一次出现的位置。
提示:如果要从头到尾搜索,使用 indexOf()
方法。
参数值
参数 | 描述 |
---|---|
item | 必需。要搜索的项目。 |
start | 可选。从哪里开始搜索。负值的给定的位置从末尾计数,然后搜索到开头。 |
原生js手写实现:
var arr = [12, 15, 25, 36, 88]
var arr1 = [16]
var arr2 = ["ni", "hao", "jian", "jian"]
Array.prototype.newLastIndexOf=function(item,start){
var startIndex=this.length-1;
if(start){
if(start<0){
startIndex=this.length+start;
}else{
startIndex=start;
}
}
for(var i=startIndex;i>=0;i--){
if(item===this[i]){
var ls=i
}
}
if(ls){
return ls;
}else{
return -1;
}
}
console.log( arr.newLastIndexOf(36,4));
console.log( arr2.newLastIndexOf('jian'));
console.log( arr2.newLastIndexOf('jian',-3));
十四.JavaScript Array isArray() 方法
定义和用法
isArray()
方法确定对象是否为数组。
如果对象是数组,则此函数返回 true,否则返回 false。
参数值
参数 | 描述 |
---|---|
obj | 必需。需测试的对象。 |
原生js手写实现:
var arr = [12, 15, 25, 36, 88]
var arr1 = []
var arr2 = ["ni", "hao", "jian", "jian"]
Array.prototype.newIsArray = function () {
if(this.constructor.name=="Array"){
return true;
}else{
return false
}
}
console.log(arr.newIsArray());
十五.JavaScript Array splice() 方法
定义和用法
splice()
方法向/从数组添加/删除项目,并返回删除的项目。
注释:splice()
方法会改变原始数组。
参数值
参数 | 描述 |
---|---|
index | 必需。整数,指定在什么位置添加/删除项目,使用负值指定从数组末尾开始的位置。 |
howmany | 可选。要删除的项目数。如果设置为 0,则不会删除任何项目。 |
item1, ..., itemX | 可选。要添加到数组中的新项目。 |
原生js手写实现:
var arr = [12, 15, 25, 36, 88]
var arr2 = ["ni", "hao", "jian", "jian"]
Array.prototype.newSplice = function (index, howmany) {
//确定好删除位置索引的值
if (index < 0) {
var startindex = this.length + index;
} else {
startindex = index;
}
//调节一下删除的数量
if (howmany > 0) {
var number = howmany;
} else {
number = 0
}
//创建一个临时数组,将删除索引之后的值存起来
var arrlen = this.length;
var newarr = [];
for (var i = startindex; i < arrlen; i++) {
newarr[i - startindex] = this[i]
}
//先将传递过来的需要插入的数据长度查出来
var arglen = arguments.length - 2;
for (var i = 0; i < arglen; i++) { //将传来的数据插入到数组当中去
this[i + startindex] = arguments[i + 2]
}
//将数组中剩余的插入到数组中去
for (var i = number; i < newarr.length; i++) {
this[startindex + arglen + i - number] = newarr[i];
}
}
arr.newSplice(2, 0, 56, 55)
var fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits.newSplice(2, "Lemon", "Kiwi");
console.log(fruits);
console.log(arr);
十六.JavaScript Array copyWithin() 方法
定义和用法
copyWithin()
方法将数组元素复制到数组中的另一个位置,覆盖现有值。
copyWithin()
方法永远不会向数组添加更多项。
提示:copyWithin()
方法会覆盖原始数组。
参数值
参数 | 描述 |
---|---|
target | 必需。将元素复制到的索引位置。 |
start | 可选。开始复制元素的索引位置(默认为 0)。 |
end | 可选。停止从中复制元素的索引位置(默认为 array.length)。 |
原生js手写实现:
var arr = [12, 15, 25, 36, 88]
var arr1 = [16]
var arr2 = ["ni", "hao", "jian", "jian"]
Array.prototype.newCopyWithin = function (target,start,end) {
var startIndex=0;
var endIndex=this.length;
//开始索引,负数从后数
if(start){
if(start<0){
startIndex=this.length+start;
}else{
startIndex=start;
}
}
//结束索引,负数从后数
if(end){
if(end<0){
endIndex=this.length+end;
}else{
endIndex=end;
}
}
//创建一个临时数组,将原始值存放起来
var newarr=[];
for(var i=0;i<this.length;i++){
newarr[i]=this[i];
}
//进行复制
for(var i=target,j=startIndex;i<this.length&&j<endIndex;i++,j++){
this[i]=newarr[j];
}
}
arr.newCopyWithin(2,0)
console.log(arr);
arr2.newCopyWithin(2,0,1)
console.log(arr2);