2016-12-03 15 views
10

Object.entries(object).map((key, i)10 kullanmayı sevmiyorum çünkü bunun bir ECMAScript 7 deneysel teknolojisi olduğunu öğrendim ve üretimde bir şeyler ters gidebileceğini hissediyorum. Herhangi bir yerel javascript alternatifi var mı?React.js Object.entries yerine nesne üzerinde yineleme doğru yolu

Ad, fiyat ve açıklama değerleriyle ilgili hiçbir sorunum yok çünkü bunların tam olarak nerede oluşturulacağını biliyorum ve Populate.key ile bunlara erişebiliyorum, ancak özellik açısından, nesne üzerinde okuryazar ve her iki anahtarı da oluşturmam gerekiyor ve değer.

Object.keys(priceChars).map(function(key, i) kullanmayı denedim, ancak anahtarın değerden nasıl ayrılacağını anlamadım. Gibi, "performans 500" render, ama bir simge sınıfında olmak için performans kelimesine ihtiyacım var ve 500 görüntülenecek gerçek bir değer.

Benim JSON yapısı

const Populate = { 
    'name': "Product", 
    'price': "1000", 
    'description': "Product description", 
    'characteristics': { 
    'performance': '500', 
    'pressure': '180', 
    'engine': '4', 
    'size': '860*730*1300', 
    'weight': '420' 
    } 
} 

Ve bileşen

class PriceBlock extends Component { 
    render() { 
    const {priceName, priceDesc, priceVal, priceChars} = this.props; 
    const characteristics = Object.entries(priceChars).map((key, i) => { 
     return (
     <div className="price__icon-row" key={i}> 
      <i className={'ico ico-' + key[0]}></i> <span>{key[1]}</span> 
     </div> 
    ); 
    }); 
    return (
     <div className="col-5 price__block"> 
     <div className="price__name">{priceName}</div> 
     <div className="price__description">{priceDesc}</div> 
     <div className="price__icons"> 
      {characteristics} 
     </div> 
     <div className={ managePriceClass(priceVal) }>{priceVal}</div> 
     </div> 
    ); 
    } 
} 
+1

@Endless: Bu soru Tepki ile ilgisi temelde ilgisi yoktur. –

+0

Babel gibi bir derleyici kullanıyorsanız, yapılandırmanızın doğru şekilde ayarlandığı sürece sorun olmamalıdır. – Dom

cevap

42
a = { 
    a: 1, 
    b: 2, 
    c: 3 
} 

Object.keys(a).map(function(keyName, keyIndex) { 
    // use keyName to get current key's name 
    // and a[keyName] to get its value 
}) 
+0

Teşekkür ederim, @nadavvadan! –

+3

Çok zarif ve özlü bir çözüm. A.keyName üzerinden erişmenin bir hataya neden olacağına da dikkat etmeliyim, çünkü a. Nesnesinde 'keyName' adında bir anahtar yoktur. Daha doğrusu, – tormuto

+0

Oh değerine erişirken bir [keyName] 'a yapıştıysam, bunu nasıl fark etmedim. Teşekkürler @tormuto! – nadavvadan