Giriş
Açıklaması şöyle
Açıklaması şöyle
The map() method is used to apply a function on every element in an array and then return a new array.
Array'deki her elemanı bir metoda sokar ve sonuçları dizi olarak döner. Eğer yeni bir dizi istemiyorsak map() yerine forEach() metodu da kullanılabilir.
Bounding Scope
Array map metodu yeni bir dizi döner. a,b,c karakterlerini içeren diziyi map metoduna sokuyoruz.
Dizideki her bir string'e önek vermek istersek şöyle yaparız.
Eğer elimizde veri primitive tip ise zaten ilk diziyi değiştirmenin yolu yok. Şöyle yaparız.
Elimizdeli object'i değiştirince ilk dizinin de değiştiğini görmek için şöyle yaparız.
Açıklaması şöyle.
Bounding Scope
map() metodunu her zaman arrow function ile kullanmak daha iyi. Şöyle yaparız. Böylece arrow function içinde this.XYZ şeklinde değişkenleri kullanabiliriz.
Açıklaması şöyle. Eğer arka arkaya bağlanmış map() çağrıları varsa Java ilk elemanı alır birinci map() işlemine sokar daha sonra ikinci map() işlemine sokar.
Örnekthis.props.answeredQuestions.map( (question, index) => {
//rest of the code
});this.props.answeredQuestions.map(function(question, index) {
  if (!this.state.viewMoreToken) {
    ...
  }
});TypeError: Cannot read property 'state' of undefinedrender() {
  const { answeredQuestions } = this.props;
  const { viewMoreToken } = this.state;
  
  return (
    {answeredQuestions &&
     answeredQuestions.map(function(question, index) {
     if (!viewMoreToken) {...}
     }
    }
);Açıklaması şöyle. Eğer arka arkaya bağlanmış map() çağrıları varsa Java ilk elemanı alır birinci map() işlemine sokar daha sonra ikinci map() işlemine sokar.
.map will necessarily iterate through the whole input array before resolving to the mapped output array (after which the mapped output array will then have another .map called on it).Elimizde şöyle bir kod olsun.
List<Integer> nums = Arrays.asList(1,2,3,4,5,6);    
nums.stream().map(x->{
    x = x * x;
    System.out.println("map1="+x);
    return x;
}).map(x->{
    x = x * 3;
    System.out.println("map2="+x);
    return x;
}).forEach(x-> System.out.println("forEach="+x));map1=1
map2=3
forEach=3
map1=4
map2=12
forEach=12
map1=9
map2=27
forEach=27
map1=16
map2=48
forEach=48
map1=25
map2=75
forEach=75
map1=36
map2=108
forEach=108var nums = [1,2,3,4,5,6 ];
nums.map(x => {
  x = (x * x);
  console.log('map1='+x);
  return x;})
.map(x => {
  x = x * 3;
  console.log('map2='+x);
  return x;})
.forEach(x=> console.log('forEach='+x));map1=1
 map1=4
 map1=9
 map1=16
 map1=25
 map1=36
 map2=3
 map2=12
 map2=27
 map2=48
 map2=75
 map2=108
 forEach=3
 forEach=12
 forEach=27
 forEach=48
 forEach=75
 forEach=108Array map metodu yeni bir dizi döner. a,b,c karakterlerini içeren diziyi map metoduna sokuyoruz.
var namelist = ['a', 'b', 'c'];
var set =namelist.map(function(e) { return {name: e, p1: '', p2: '' }});var set = [{
  name: 'a',
  p1: '',
  p2: '',
},
{
  name: 'b',
  p1: '',
  p2: '',
},
{
  name: 'c',
  p1: '',
  p2: '',
}];Dizideki her bir string'e önek vermek istersek şöyle yaparız.
var arr = ['a','b','c'];
var prefix = 'prefix_';
var newArr = arr.map(el => prefix + el);
console.log(newArr);Eğer elimizde veri primitive tip ise zaten ilk diziyi değiştirmenin yolu yok. Şöyle yaparız.
// testing mutations with Array methods
function ageUp (n){
  return n+1;
}
// map does not mutate original
d = [11,12,13,14,15]
console.log("array d before map...", d)
const newd = d.map(
  num => {
    num = ageUp(num)
    return num
  }
)
console.log("array d after map ...", d)
console.log("newd array after...", newd)
// array d before map... [ 11, 12, 13, 14, 15 ]
// array d after map ... [ 11, 12, 13, 14, 15 ]
// newd array after... [ 12, 13, 14, 15, 16 ]// testing mutations with Array methods
function ageUp (n){
  return n+1;
}
function coolName (name){
  return name+name;
}
const b = [{ name: "Jonas", age: 20}, { name: "Jana", age: 30}]
// map, here, also mutates original...
console.log("array before map...", b)
const newb = b.map(
  person => {
  person.name = coolName(person.name)
  person.age = ageUp(person.age)
  return person
}
)
console.log("array after map...", b)
console.log("array newb...", newb)
// array before map... [ { name: 'Jonas', age: 20 }, { name: 'Jana', age: 30 } ]    
// array after map... [ { name: 'JonasJonas', age: 21 }, { name: 'JanaJana', age: 31 } ]
// array newb... [ { name: 'JonasJonas', age: 21 }, { name: 'JanaJana', age: 31 } ]Elimizdeli object'i değiştirince ilk dizinin de değiştiğini görmek için şöyle yaparız.
function point(x,y){
  return {x,y}
}
arr1 = [point(1,2), point(3,4)];
console.log(arr1, "arr1");
arr2 = arr1.map(b=>{
  b.x = b.x+2;
  b.y = b.y+2;
  return b;
})
console.log(arr1, "arr1");
console.log(arr2, "arr2");arr2 = arr1.map(b => {
  return {
    x: b.x + 2,
    y: b.y + 2
  };
})const arr2 = arr1.map(({x, y}) => ({
  x: x + 2,
  y: y + 2
}))Açıklaması şöyle.
... callback is invoked only for indexes of the array which have assigned values, including undefined.map metodu sadece dolu elemanlar için çalışır. Elimizde length'i olan ancak içi boş bir dizi olsun
Array(2); // [empty × 2] Array(2).map( () => "foo");  // [empty × 2]  
Hiç yorum yok:
Yorum Gönder