Javascript'te yalnızca bir parçasına ihtiyacım olan ilişkisel bir dizi var. Düzenli bir diziyle, ihtiyacım olan kısmı elde etmek için sadece dilimi kullanırdım, ama açıkçası bu bir ilişkisel dizi üzerinde çalışmayacak. Bu nesnenin yalnızca bir kısmını döndürmek için kullanabileceğim herhangi bir Javascript işlevi var mı? Değilse, bunu yapmak için en iyi uygulamalar hangisi olurdu? Teşekkürler!Javascript İlişkilendirme Dizisi'nin bir dilimini aldınız mı?
cevap
'dilim' Nesne, hayır için iyi bir yolu olmalı gitmiyor, ama sen gerçekten olsaydı bunu yapabilirsiniz: küçük işlevi yoktur
var myFields = ['field1', 'field2', 'field3'];
var mySlice = {};
for (var i in myFields) {
var field = myFields[i];
mySlice[field] = myOriginal[field];
}
Eksik hasOwnProperty ... 3 ... 2 ... 1 ...;) –
Hmm'de patlıyor, yani temelde nesne özellikleri ile döngü? Nesnem dilediğim nesnede ihtiyacım olan tüm özelliklere sahip olduğu için, sadece bir döngüde int ekleyebilir ve sadece ihtiyacım olan sayıları alamaz mıyım? yani (i> 0 && <11)? –
@IvoWetzel Sayfada, Nesne prototipinde sayısız özellik ekleyen bir kod varsa, o zaman kendi hataları vardır! – Raynos
kullandığım:
/**
* Slices the object. Note that returns a new spliced object,
* e.g. do not modifies original object. Also note that that sliced elements
* are sorted alphabetically by object property name.
*/
function slice(obj, start, end) {
var sliced = {};
var i = 0;
for (var k in obj) {
if (i >= start && i < end)
sliced[k] = obj[k];
i++;
}
return sliced;
}
Tam olarak bunu yapan this gist oluşturdum. Sağlanan yalnızca argümanlar ile yeni bir nesne döndürür ve eski nesneyi sağlam bırakır.
if(!Object.prototype.slice){
Object.prototype.slice = function(){
var returnObj = {};
for(var i = 0, j = arguments.length; i < j; i++){
if(this.hasOwnProperty(arguments[i])){
returnObj[arguments[i]] = this[arguments[i]];
}
}
return returnObj;
}
}
Kullanımı:
var obj = { foo: 1, bar: 2 };
obj.slice('foo'); // => { foo: 1 }
obj.slice('bar'); // => { bar: 2 }
obj; // => { foo: 1, bar: 2 }
- 1. JavaScript: Bir nesneden anahtar isimleri aldınız mı?
- 2. Muteks'in bir listesini aldınız mı?
- 3. CKEditor içeriğini aldınız mı? - jQuery
- 4. XNA: Bir dizi/kaynak listesi aldınız mı?
- 5. VB2008: Bir formun dosya adını aldınız mı?
- 6. iOS - Pencerenin bir görünümünün konumunu aldınız mı?
- 7. Redisli bir dizi anahtar mı aldınız?
- 8. UIBezierPath'in bağımsız bir kopyasını aldınız mı?
- 9. , metni belirli bir hücrede QTableWidget'de aldınız mı?
- 10. Quaternion'dan euler rotasyonunu aldınız mı?
- 11. SSRS'den raporların listesini aldınız mı?
- 12. Mevcut dersin adını aldınız mı?
- 13. WOEID şehrini şehir adından mı aldınız?
- 14. Lollipop için WebView sürüm numarasını aldınız mı?
- 15. CPU kullanımını kabuk betiğinde aldınız mı?
- 16. WPF - Bellekte UIElement'in boyutunu aldınız mı?
- 17. Uzak repo dosyasından eksik dosyaları aldınız mı?
- 18. OpenCV: Hough akümülatör değerini aldınız mı?
- 19. MySQL: Ortalama zaman farkları aldınız mı?
- 20. HTML girişinde kayıt pozisyonunu aldınız mı?
- 21. Müzik sanatçısı verilerini wikipedia'dan aldınız mı?
- 22. Javascript'te parametresiz son URL segmentini aldınız mı?
- 23. Bu yöntemin tanımlandığı sınıfı aldınız mı?
- 24. MavenProject'i sadece POM.xml - pom ayrıştırıcısından aldınız mı?
- 25. İsteğe bağlı django parametrelerini aldınız mı?
- 26. Mobil safaride "viewport" pozisyonunu aldınız mı?
- 27. Onay kutusunun kimliğini aldınız mı? - jQuery
- 28. , saklı yordamdan parametreyi geri aldınız mı?
- 29. Etkinlikte jQuery'yi kullanarak tıklama öğesini aldınız mı?
- 30. Onay kutusundaki tüm değerleri aldınız mı?
jQuery bir seçenek var mı? – James
Öncelikle, sakladığınız verilerin türünü ve bununla ne yapmanız gerektiğini bize bildirin. Çok boyutlu mu? Sipariş verilmesi gerekiyor mu? Özel ihtiyaçlarla ilgili birkaç detay yardımcı olabilir. –
Evet, bu site boyunca jQuery kullanıyorum. –