Oca.20

Hızlandırılmış EcmaScript 6+ Dersleri – 9: Yeni Built-in (Yerleşik) Metotlar


EcmaScript 6 ile birlikte bazı yerleşik metotlar gelmiştir. Bunlardan sıklıkla işimize yarayabilecek olanları kısa kısa örneklerle inceleyelim…

Object Özellik Atamaları

Bir Object’e başka Object’lerin eklenmesi durumudur.  Eğer hedef nesnede aynı key’ler varsa, kaynaktaki key’ler üzerine yazılır ve diğer key’ler de eklenir.

Object.assign(hedef_nesne, …kaynak_nesneler)

let depo = { a: 1 };
let eklenenler_1 = { a: 5, b: 2, c:3 };
let eklenenler_2 = { d: 4 };

Object.assign(depo, eklenenler_1, eklenenler_2);

console.log(depo);

Örneğimizde 3 adet Object bulunuyor. eklenenler_1 ve eklenenler_2’yi depo isimli Object’e aktararak birleştirdik. Dikkat edin, eklenenler_1’de a isminde aynı key var. Bu key, depo’daki a key’ini ezecektir.

Konsolda çıkan sonuç aşağıdaki gibi olacaktır.

Object { a: 5, b: 2, c: 3, d: 4 }

Eğer hedef nesne yoksa {} olarak nesne tanımlaması yapılır ve yeni bir nesneye aktarılır.

let eklenenler_1 = { a: 5, b: 2, c:3 };
let eklenenler_2 = { d: 4 };
let depo = Object.assign({}, eklenenler_1, eklenenler_2);
console.log(depo);

Bu örneğimizde de hedef bir Object olmadığı için {} operatörleri ile boş bıraktık ve sonucu da depo isminde yeni bir nesneye aktardık. Sonuç aşağıdaki gibi olacaktır.

Object { a: 5, b: 2, c: 3, d: 4 }

Array’de Eleman Arama

Daha önceleri bir Array’de arama yapmak için for in veya for döngüsü ile tek tek elemanları gezip if ile kontrol etmemiz gerekiyordu. ES6’da bu iş çok daha pratik bir hal almış. 

console.log( [ -44, 12, -1, 6, 1, 0, -100 ].find(x => x > 0) ); // 12

Dizide elemanı bulmak için .find() metodunu kullanıyoruz. Yukarıda, dizi içinde 0’dan büyük olan değeri bulup return ediyoruz. Ancak dikkat edin, dizide 0’dan büyük olarak 12, 6, 1 değerleri bulunmasına rağmen sadece 12 değerini döndürdü. Yani bu metot ilk bulduğu karşılaştırma değerini bulur ve iterasyonu durdurur.

Şimdi de bulunan elemanın dizide kaçıncı index’te olduğuna bakalım.

console.log( [ -44, 12, -1, 6, 1, 0, -100 ].findIndex(x => x > 0) ); // 1

Bulunan elemanın indeksini .findIndex() metodu ile alıyoruz. 0’dan büyük olan ilk eleman dizide 2. elemandır, yani 1. index’te yer almaktadır.

String Tekrarlama

Bir metni, argüman olarak verilen sayı kadar tekrar ederek birleştirir.

let yildiz = "*";
yildiz.repeat(4);
console.log(yildiz); // *
console.log("*".repeat(4)); // ****

Örnekte dikkat etmeniz gereken kritik bir durum var. İlk olarak yildiz adında bir değişken tanımlayıp * karakterini metin olarak tanımladık. .repeat(4) metodunu kullandık ve **** olarak sonuçlanmasını bekledik, ama olmadı! Yani değişken üzerinden işe yaramıyor. Ancak diğer yazdırma metodunda “*” ile direkt metni oluşturup tekrar ettiğimizde sonuç beklenilen şekilde çıkıyor.

String Arama

Metinler içerisinde bir karakteri veya bir başka karakter dizisini kolaylıkla arayabiliriz. Örnekler üzerinden inceleyelim…

let metin = "Web Tasarımı ve Web Programlama Kitabı";
// Metin, belirtilen karakter veya karakter dizisiyle başlıyor mu?
console.log( metin.startsWith("W") ) // true
console.log( metin.startsWith("Web") ) // true
console.log( metin.startsWith("Tasarımı") ) // false
// Metin, belirtilen karakter veya karakter dizisiyle bitiyor mu?
console.log( metin.endsWith("ı") ) // true
console.log( metin.endsWith("abı") ) // true
console.log( metin.endsWith("ve") ) // false
// Metnin içinde belirtilen karakterler var mı?
console.log( metin.includes("ve") ) // true
console.log( metin.includes(" ") ) // true
console.log( metin.includes("Tasarımım") ) // false
console.log( metin.includes("WEB") ) // false
// Metin içinde belirtilen karakterler, belirtilen pozisyondan sonra var mı?
console.log( metin.includes("Web", 2) ) // true
console.log( metin.includes("Web", 20) ) // true

Metinlerde arama yaparken 3 farklı metot kullanıyoruz. .startsWith() metnin neyle başladığını, .endWith() metnin neyle bittiğini, .includes() metnin karakteri içerip içermediğini kontrol eder. Bu 3 metodun 2 parametresi vardır. Bunlardan ilki aranacak olan karakter veya karakter dizisidir. İkinci parametre de Integer olarak belirtilen pozisyon sayısıdır. Yani metnin hangi karakter index’inden itibaren arama yapılacağını belirtir. Eğer pozisyon belirtilmezse varsayılan değer olarak 0. pozisyondan itibaren arama yapılır.

Yukarıda yer alan örnekleri ve true/false sonuçlarını inceleyin…

Number Güvenlik Kontrolü

Belirtilen bir sayının mantıklı bir değer olup olmadığı kontrolü yapılır.

console.log( Number.isSafeInteger(512) ); // true
console.log( Number.isSafeInteger(412490073423252354592) ); //false

Kontrol edilen ilk sayı 4 basamaklı bir sayı ve gayet mantıklı ve işlenebilir bir değer ve true değeri döndürür. Ancak ikinci kontrol edilen sayı çok uzun basamaklı ve muhtemelen kullanılamayacak veya kullanılması mantıksız olarak yorumlanan bir sayıdır. Bu nedenle ikinci sayı false değeri döndürür.

Number İşaret Saptaması

Belirtilen bir sayıyı 1, 0 ve -1 değerlerine çevirir. Bunu yaparken eğer sayı pozitifse 1’e, 0’a eşitse 0’a, negatifse -1’e çevirir.

console.log(Math.sign(2))   // 1
console.log(Math.sign(0))   // 0
console.log(Math.sign(-15))  // -1

Makale serimizin diğer konuları şunlar olacaktır:


Web Tasarımı ve Web Programlama 2020

Yorum bırak

Yorum