【问题标题】:Irritating object keys and there values from 1 line of an object with es6?令人讨厌的对象键和 es6 对象的 1 行中的值?
【发布时间】:2019-10-09 13:48:48
【问题描述】:

我有一个带有一行键和值的对象。 我正在尝试映射这些键并显示值。

   productObj = {id:0, name:"toy", price:10, description:null, inventory:7 }

   productObj.map((product, index) => { 
      if(product.inventory > 0){
       return(
          <div>Product Inventory: {product.inventory}</div>
        );
      }
      if(product.description){
        return(
          <p>{product.description}</p>
        );
      }
    })

这是我想要完成的一个例子。

我用过:

  const keys = Object.keys(productObj)

我能够映射键值数组。

但是,这意味着我必须重新使用原始对象来获取键的值。

我确定有更好的方法来实现这一点吗?谢谢。

【问题讨论】:

  • 您为什么需要map 密钥?从问题来看,您似乎只需要一个 if-else
  • 你有单个对象的对象数组吗?
  • 我试图仅在产品属性存在时列出它们。
  • 你可以用Object.values代替Object.key
  • 我认为将我的对象转换为类似 productObj = [{id:0}, {name:"toy"}, {price:10}, {description:null}, {inventory:7}] 的东西会解决我的问题。

标签: javascript arrays reactjs object


【解决方案1】:

如果你想要键和值,你可以使用Object.entries。

return Object.entries(productObj).filter(x => x[1]).map(([k,v]) => <div>{`k:{v}`}</div>)

“使用上面的例子。if(inventory>2)是否可以实现这个if语句。减少”。

您可以创建具有不同键的对象,这些键具有不同键的功能。

const obj = {
   invetory:a => a > 2
}
return Object.entries(productObj)
            .filter(([k,v]) => obj[k] ? obj[k]() : x[1])
            .map(([k,v]) => <div>{`k:{v}`}</div>)

【讨论】:

  • 我得到 productObj.map is not a function ,这是我的对象在空 {"id":null,"strn":null,"typ":null,"eth_prc":null,"fth_prc":null,"hlf_prc":null,"zip_prc":null,"prc":null,"name":null,"eth_siz":null,"img2":null,"brand":null,"des":null} 时的样子。我只是想在它们不为空时将这些值列出到元素中。所以这会生成一个空列表。如果其中一个键有值,则需要列出。
  • 非常感谢您的帮助。我正在研究如何实施该解决方案。看起来它可以工作,但我正试图弄清楚如何将它用于我的反应目的。
  • 好的,这行得通。 const ListedObj = Object.entries(productInfo).filter(x =&gt; x[1]).filter(Boolean).map(([k,v]) =&gt; &lt;div&gt;{k +" "+ v}&lt;/div&gt; 正在返回一个仅包含非空值的键的列表。请问if语句如何实现?使用上面的例子。 if( inventory&gt;2 ) 是否可以实现这个 if 语句。减少?
  • @AaronTomlinson 是否每个key:value 或仅库存都有条件
  • 我得到了我正在寻找的东西const ListedObj = Object.entries(productInfo).filter(x =&gt; x[1]).filter(Boolean).map(([k,v]) =&gt; (k === "type" || k === "strain")?&lt;div&gt;{k +" "+ v}&lt;/div&gt;:null)这是一个好习惯吗?这个变量的控制台日志看起来像 ,,,,,,,,,,,,,,[object Object],,[object Object],但它呈现在 HTML 中,就像我想要的那样,没有任何逗号。
猜你喜欢
  • 1970-01-01
  • 2010-09-22
  • 2015-01-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-11-08
  • 1970-01-01
  • 2012-09-02
相关资源
最近更新 更多