【问题标题】:Javascript - Access to values that were generated inside for loopJavascript - 访问在 for 循环中生成的值
【发布时间】:2016-10-21 04:30:48
【问题描述】:

我愿意在数组 MessageContent.orderedDishes[i] 内运行 for 循环以获取该数组内的值,但问题是 MessageContent.orderedDishes[i] 位于名为 textToSend 的变量内,我无法将其移到变量作为该变量的内容将被发送到另一个视图

shareWithClient(MessageContent){
    let textToSend = 
        '####################' + '\n\n' +
        'Dish : ' + MessageContent.orderedDishes[i].dishName + '\n' +
        'Category : ' +MessageContent.orderedDishes[i].categoryName+'\n' +
        'Qty  : ' + MessageContent.orderedDishes[i].qty +'\n\n'+
        '####################';

    SocialSharing.shareViaWhatsApp(textToSend).then(() => {
        // Success!
    }).catch(() => {
        // Error!
    });
}

工作,但只打印数组的第一个元素,知道数组有 3 个元素:

      var textToSend = '';
        for(var i=0; i<MessageContent.orderedDishes.length; i++){
       textToSend = '' +
        '####################' + '\n\n' +
        'Dish : ' + MessageContent.orderedDishes[i].dishName + '\n' +
        'Category : ' +MessageContent.orderedDishes[i].categoryName+'\n' +
        'Qty  : ' +MessageContent.orderedDishes[i].qty +'\n\n'+
        '####################';
      }
    console.log('textToSend');

【问题讨论】:

  • 循环在哪里?如果它在 shareWithClient 函数之外,只需将点菜作为参数传入,而不是整个 MessageContent 对象。
  • 到底有什么问题?循环在哪里? i 是什么?
  • @TedHopp 问题正是我想以某种方式在 testToSend 内运行 for 循环,这显然是不可能的,但同时我愿意找到一种方法来获取数组
  • 您是否尝试过将textToSend 初始化为一个空字符串,然后运行一个循环来为i 的每个值附加内容?
  • 尝试使用textToSend += '###...' 而不是textToSend = '' + ...。你想追加textToSend,而不是每次循环都重置它。

标签: javascript promise


【解决方案1】:
shareWithClient(MessageContent)  {
  let text = '';
  if (MessageContent && MessageContent.orderedDishes) {
    MessageContent.orderedDishes.forEach(buildText);
  }
  shareText();

  function buildText(dish) {
    text += `####################
             Dish : ${ dish.dishName }
             Category : ${ dish.categoryName }
             Qty  : ${ dish.qty }

            ####################`;
  }

  function shareText() {
      SocialSharing.shareViaWhatsApp(text).then(() => {
        // Success!
        }).catch(() => {
        // Error!
      });
  }

}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-01-13
    • 1970-01-01
    • 1970-01-01
    • 2018-02-04
    • 1970-01-01
    • 2012-09-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多