İki diziyi nasıl karşılaştırırız?

Dizinin içinde bir eleman var mı yok mu nasıl öğrenebiliriz?
Dizilerden birinde olup diğerinde olmayan elemanlardan yeni bir dizi oluşturabilir miyiz?
Bu soruların cevabını kolaylaştırmak için bilmemiz gereken 3 javascript metodu var.
Bunlar;
-array.prototype.indexOf();
-array.prototype.filter();
-array.prototype.concat();
İlk olarak bu metodları açıklayalım.
array.prototype.indexOf()
indexOf() metodu, aldığı karakterin dizi içindeki konumunu verir.
Eğer alınan karakter dizi içinde yoksa -1 döndürür.
Büyük-küçük harf duyarlılığı vardır.
Kullanımı :
arr.indexOf(aranacakElement[, aramayaBaşlanacakSıra=0])
Örneğin,
var str = ['h','e','l','l','o']; var i = str.indexOf("e");
//Birinci eleman olan e harfi için i, 1 döner. Dizilerin 0'dan başladığını unutma!
indexOf() metodunda, karakteri aramaya başlamak istediğimiz sırayı da belirtebiliriz;
var i=str.indexOf("r",3); //yazsaydık r harfinin yerini aramaya 3. karakterden itibaren bakmaya başlayacaktı.Bulamadığı için ise -1 döndürecekti i değerini.
array.prototype.filter()
filter() metodu, uygulanack filtre uygulandıktan sonra, filtrelenmiş elemanları yeni bir diziye aktarır.
Örneğin;
function yuzdenKucukSayilar(val){ return val <100; } var filtreliDizi = [12, 8, 20, 120, 80].filter(yuzdenKucukSayilar);
// yeni dizi [12, 8, 20, 80] olarak döner.
array.prototype.concat()
concat() metodu, bir dizi ile başka bir dizi ve/ve ya değeri birleştirerek yeni bir dizi döndürür.
Örneğin,
var dizi1 = ['a', 'b', 'c']; var dizi2= [1, 2, 3]; var yeniDizi = dizi1.concat(dizi2);
// ['a', 'b', 'c', 1, 2, 3] olarak döner.
// Eğer ikinci diziyi dizi formatında değilde eleman olarak eklemek isteseydik dizi1.concat(1, [2, 3 ]) //şeklinde yazabilirdik.
En baştaki sorulara dönersek,
üstte bulunan 3 metodu kullanarak bu soruları cevabını verelim:
function diffArray(arr1, arr2) { var newArr = []; newArr = arr1.concat(arr2); function comparison(item){ if(arr1.indexOf(item) == -1 || arr2.indexOf(item) == -1){ return item; } } return newArr.filter(comparison); } diffArray([1, 2, 3, 5], [1, 2, 3, 4, 5]);
//İlk olarak iki diziyi birleştirdik (daha sonra filtreleyerek farklı olan elemanı bırakacğız)
//Burada yaptığımız olay, arr1 de veya arr2 de aradığımız item yoksa o itemi döndürerek filter metodundan geçirip yeni diziyi döndürmek
//fonksiyon [4] olarak döner.
DİZİLERİ KARŞILAŞTIRMA
Reviewed by Engineer A
on
21:26
Rating:

Hiç yorum yok: