创建一个JavaScript类来将数组分成奇数和偶数数组

在这篇文章中,我们将创建一个JavaScript类来将一个数组分成一个奇数和偶数数组,其中没有重复数字。

首先让我们创建一个空方法的类,稍后我们将填入这个方法。

class EvenOdd {
	
	constructor(arry) {
		this.even_array = [];
		this.odd_array = [];
		this.arry = arry; // assign the raw array to this.arry 
	}
	
	// break this.arry into two group, even and odd array
	createoddevenarray() {
	}
	
	// push the number into array only if it is unique
	static insertNumber(arr, number) {
	}
	
	printArray() {
	}
	
}

这个类在这里要做的是调用createoddevenarray方法,然后调用raw number数组的forEach方法中的insertNumber方法,并将原始数组中的数字作为第一个参数,并将奇数或偶数数组作为第二个参数(取决于第一个参数是奇数还是偶数)到insertNumber方法。 insertNumber方法将首先确保该数字是唯一的,然后将其推入奇数或偶数组中。最后,createoddevenarray方法将按照升序对奇数和偶数组中的元素进行排序。现在让我们填写这两种方法的内容。

// break this.arry into two group, even and odd array
	createoddevenarray() {
		let even_array = this.even_array;
		let odd_array = this.odd_array;
		this.arry.forEach(function(number) {
			if(number % 2 == 0)
				EvenOdd.insertNumber(even_array, number);
			else
				EvenOdd.insertNumber(odd_array, number);
		});
		
		// sort the array elements into ascending order
		even_array.sort((a, b) => a - b)
		odd_array.sort((a, b) => a - b)
	}
	
	// push the number into array only if it is unuque
	static insertNumber(arr, number) {
		
		let found = arr.find(function(value, index, array) {
			 if(value == this)
				 return true;
		}, number);
		
		if(found == undefined) {
			arr.push(number);
		}
	}

请注意,如果我们想在对象内调用insertNumber方法,那么我们必须在该方法前面插入static关键字。

最后,printArray方法将输出奇数和偶数组。

printArray() {
		console.log("odd number array is")
		console.log(this.odd_array)
		console.log("even number array is")
		console.log(this.even_array)
	}

现在让我们创建一个类的实例,然后将这个单个数组分成奇数和偶数组,并在控制台上打印出来。

let arry = [6, 8, 40, 30, 21, 39, 8] // raw array with non unique, odd and even numbers
let even_odd_array = new EvenOdd(arry);

even_odd_array.createoddevenarray();
even_odd_array.printArray();

结果如下…

奇数数组是
[ 21, 39 ]
偶数数组是
[ 6, 8, 30, 40 ]

您可以进一步修改上面的类并将其转换为您需要的类,例如,您可以对数字类型进行排序,也可以对字符串进行排序,并稍微修改这些类方法。

Leave a Reply

Be the First to Comment!

avatar
  Subscribe  
Notify of