2016-03-22 17 views
0

Javascript Arrays'deki bir dersten geçiyorum. Burada alt çizgi js yöntemlerinin kapağının altında ne olduğunu anlamak zorundayız. _.each yöntemi için tek bir dizi üzerinde yineleme yapmamı ve her değer için indeksi içeren değiştirilmiş bir yuvalanmış dizi döndürmesini sağlayacak bir işlev yazmam gerekiyor. Her yeni dizi gibi görünmelidir myArray üzerinde deniriç içe diziler üzerinde yineleyin ve her bir dizine erişim sağlayın

var myArray = ['a', 'b', 'c']; 

yöntemle sonra: Örneğin

myArray = [ [ 'a', 0 ], [ 'b', 1 ], [ 'c', 2 ] ]; 

Ben bir gün için google arama ve edilmiş bu şey özgü bulamadı görev. Takıldım ve biraz yardıma ihtiyacım var! Teşekkür ederim.

+0

_.map fonksiyonu kullanmak için bu

var myArray = ['a', 'b', 'c']; _.each(myArray, function (e, i) { myArray[i] = [e, i]; }); document.write(JSON.stringify(myArray));
<script src="https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.8.3/underscore-min.js"></script>

gibi Ama daha iyi vaka için bunu yapabilir bunu 'her' ile çözemezsin. Bunun yerine 'map' kullan. – Bergi

+0

O her birini öğreniyor. 'map' daha iyidir, ama sıradaki. – Wainage

cevap

1

Sen Array.prototype.reduce() işlevini kullanarak aşağıda gibi

var myArray = ['a', 'b', 'c']; 
var result = myArray.reduce(function(a,b,i){ 
return (a.push([b,i]), a) 
},[]); 
console.log(result); // [['a',0],['b',1],['c',2]]; 

bunu Yoksa @bergi sen de Array.prototype.map() ile

var myArray = ['a', 'b', 'c']; 
var result = myArray.map(function(itm,i){ 
return [itm,i]; 
}); 
console.log(result); // [['a',0],['b',1],['c',2]]; 
+0

, bu durumun, ailenin ne olduğunu bildiğini varsayar. – hownowbrowncow

+0

, mozilla dokümanlarındaki bu işlevleri açıklayabilir mi? Bu cevabı tam olarak onaylarken, birçok JavaScript programcısı işlevsel programlama paradigmasına aşina değil. – froginvasion

+0

@froginvasion Üzgünüm, Hindistan'da 3. sırada. Sadece klavyemde uyudum. Resmi dokümanlara bağlantı ekledim. :) –

1

yapabilir söylediği gibi sadece kullanabilirsiniz Array#map():

map() yöntemi, calli sonuçlarıyla yeni bir dizi oluşturur. Bu dizideki her öğede sağlanan işlevi yerine getirin.

var myArray = ['a', 'b', 'c'], 
 
    result = myArray.map(function (a, i) { 
 
     return [a, i]; 
 
    }); 
 

 
document.write('<pre>' + JSON.stringify(result, 0, 4) + '</pre>');

2

_.each senin dizinin üzerinde dolaşır ve aşağıdaki imzayı

function(value, index, array)

Yani yapılabilir nasıl yapıldığını görelim ...

var result = []; 
_.each(myArray, function(value, index, array){ 
    result.push([value, index]); // <= does the work 
} 
sahiptir

Bu, ideal yol değil (map kullanmalısınız) ancak her birinin nasıl çalıştığını gösterir.

Eğer _.each yöntemini öğrenme ediyorsanız İyi şanslar

+0

Bu, kullandığınız salt JavaScript değil, daha önce bahsetmediğiniz lodash veya underscore. Her tarayıcıda bulunmadıklarından bahsetmelerine rağmen düz JavaScript çözümlerini kullanan diğer cevapları tercih ederim. – froginvasion

+0

Açık olmak gerekirse. Bu, "her" yöntemle nasıl yapılacağını açıklar. İdeal değil ama sorunun cevabı. Aşağı oy ... gerçekten mi? – Wainage

+0

Sorunun açık olduğu lodash/underscore kullanılıyor! – Wainage