【问题标题】:How to get access to object which is in forEach Javascript如何访问 forEach Javascript 中的对象
【发布时间】:2019-03-26 06:46:38
【问题描述】:

我想访问名为 productData 的对象及其属性以推入名为lookingArray 的数组。如何访问 productData?

saveProductToRecent = () => {
this.props.data.forEach(element => {
  const productData = {
    productImg: JSON.parse(element.node.product.mediaUrl).images[0],
    productPrice: element.node.product.minimalPrice,
    productName: element.node.product.name,
    productOID: element.node.product.oid
  }
});

let lookedArray = []
lookedArray.push()
localStorage.setItem('items', lookedArray)
}

【问题讨论】:

    标签: arrays reactjs object foreach


    【解决方案1】:

    您只需在forEach 循环内将productData 推送到lookedArray

    saveProductToRecent = () => {
        let lookedArray = [];
    
        this.props.data.forEach(element => {
          const productData = {
            productImg: JSON.parse(element.node.product.mediaUrl).images[0],
            productPrice: element.node.product.minimalPrice,
            productName: element.node.product.name,
            productOID: element.node.product.oid
          }
          lookedArray.push(productData);
        });
    
        localStorage.setItem('items', lookedArray)
    }
    

    【讨论】:

      【解决方案2】:

      将push语句移到forEach中,并在forEach之前声明lookedArray

      let lookedArray = []
      saveProductToRecent = () => {
      this.props.data.forEach(element => {
        const productData = {
          productImg: JSON.parse(element.node.product.mediaUrl).images[0],
          productPrice: element.node.product.minimalPrice,
          productName: element.node.product.name,
          productOID: element.node.product.oid
        }
        lookedArray.push(productData);
      });
      
      localStorage.setItem('items', lookedArray)
      }
      

      【讨论】:

        【解决方案3】:

        或者你可以通过.map使用不可变的方法来简化工作。

        saveProductToRecent = () => {
          const lookedArray = this.props.data.map(element => ({
            productImg: JSON.parse(element.node.product.mediaUrl).images[0],
            productPrice: element.node.product.minimalPrice,
            productName: element.node.product.name,
            productOID: element.node.product.oid
          });
        
          localStorage.setItem('items', lookedArray)
        }

        【讨论】:

          【解决方案4】:

          您可以为此使用reduce 而不是forEach

          saveProductToRecent = () => {
            const lookedArray = this.props.data.reduce((acc, element) => {
              const productData = {
                productImg: JSON.parse(element.node.product.mediaUrl).images[0],
                productPrice: element.node.product.minimalPrice,
                productName: element.node.product.name,
                productOID: element.node.product.oid
              };
          
              // Add productData to acc array
              return acc.concat(productData);
            }, []);
          
            localStorage.setItem('items', lookedArray);
          }

          【讨论】:

            猜你喜欢
            • 2019-05-09
            • 2020-07-08
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2015-04-20
            • 2022-07-06
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多