最新消息: 电脑我帮您提供丰富的电脑知识,编程学习,软件下载,win7系统下载。

[当结果应该是Map时要得到一个数组?

IT培训 admin 5浏览 0评论

[当结果应该是Map时要得到一个数组?

我正在尝试将MAP用于node.js程序,但最终结果却在数组中,但我需要在map中。我已经写了一些代码来使用map,但是它不能按预期工作。

请在下面的程序中查找

function CreateProduceMVPRateAsset(data, callback) {
    var ProducePRICE = {};

    var MVPPRICE = [];
    var MVPPRICE_BS = {};
    var MVPPRICE_LB = {};
    const walletPath = path.join(process.cwd(), 'wallet');
    const wallet = new FileSystemWallet(walletPath);
    console.log(`Wallet path: ${walletPath}`);
    console.log('Data', data);
    console.log('Username', data.username);
    var PRODUCENAME = data.PRODUCE;

    var COUNTRY = data.COUNTRY;
    var STATE = data.STATE;
    var MVPRATES = data.MVPRATES;
    console.log('MVPRATERATE', MVPRATES);
    // here I need help
    const MVPRATE = new Map(MVPRATES);

    for (const [k, v] of MVPRATE.entries()) {
        console.log('Inside map', k, v);
        MVPPRICE = v.RATE; // should go in  MVPPRICE

        var Value = MVPPRICE[0].value; // want to get first element value from MVPPRICE array
        console.log('Value', Value);

        var value_lb = Value / 40;
        console.log('value_lb', value_lb);

        value_lb = Number(value_lb.toFixed(4));

        console.log('If the value of BS provided controller come here');

        MVPPRICE_LB.Value = value_lb;
        MVPPRICE_LB.QuantityUnit = 'LB';
        MVPPRICE_LB.uidisplay = false;
        MVPPRICE_LB.CurrencyUnit = 'USD';

        MVPPRICE.push(MVPPRICE_LB);
        ProducePRICE.MVPPRICE = MVPPRICE;

        ProducePRICE.PRODUCENAME = PRODUCENAME;
        ProducePRICE.STATE = STATE;
        ProducePRICE.COUNTRY = COUNTRY;
        console.log('ProducePRICE', ProducePRICE); // whatever result getting it should be map however getting in array.
    }
}

我使用邮递员发送的JSON结构

{
"username": "admin2",
  "PRODUCE": "Apple",
  "STATE": "MI",
  "COUNTRY": "US",
  "MVPRATES": {
    "fuji": {
      "VARIETY": "fuji",
      "RATE": [
        {
          "UNIT": "Bussel",
          "CURRENCY": "USD",
          "VALUE": 10.25,
          "UIDISPLAY": true
        }
      ]
    },
    "gala": {
      "VARIETY": "gala",
      "RATE": [
        {
          "UNIT": "Bussel",
          "CURRENCY": "USD",
          "VALUE": 10.25,
          "UIDISPLAY": true
        }
      ]
    }
  }
}

我得到的输出:

回答如下:

@@ SudhakarRS是正确的,您正在获取MAP,您只是在MVPRATE数组中获取值,而这似乎是您的意图,看到您将其推送到这里:

MVPPRICE.push(MVPPRICE_LB);

[我在评论中提到过,但是我认为正在发生的事情是Map无法递归应用,因此当它看到MVPPRICE时,它将把您的value数组当作值,而不是Map的一部分。

我认为您可以通过以下方法解决您的问题:

MVPPRICE.concat(MVPPRICE_LB);
ProducePRICE.MVPPRICE = new Map(MVPPRICE)

[当结果应该是Map时要得到一个数组?

我正在尝试将MAP用于node.js程序,但最终结果却在数组中,但我需要在map中。我已经写了一些代码来使用map,但是它不能按预期工作。

请在下面的程序中查找

function CreateProduceMVPRateAsset(data, callback) {
    var ProducePRICE = {};

    var MVPPRICE = [];
    var MVPPRICE_BS = {};
    var MVPPRICE_LB = {};
    const walletPath = path.join(process.cwd(), 'wallet');
    const wallet = new FileSystemWallet(walletPath);
    console.log(`Wallet path: ${walletPath}`);
    console.log('Data', data);
    console.log('Username', data.username);
    var PRODUCENAME = data.PRODUCE;

    var COUNTRY = data.COUNTRY;
    var STATE = data.STATE;
    var MVPRATES = data.MVPRATES;
    console.log('MVPRATERATE', MVPRATES);
    // here I need help
    const MVPRATE = new Map(MVPRATES);

    for (const [k, v] of MVPRATE.entries()) {
        console.log('Inside map', k, v);
        MVPPRICE = v.RATE; // should go in  MVPPRICE

        var Value = MVPPRICE[0].value; // want to get first element value from MVPPRICE array
        console.log('Value', Value);

        var value_lb = Value / 40;
        console.log('value_lb', value_lb);

        value_lb = Number(value_lb.toFixed(4));

        console.log('If the value of BS provided controller come here');

        MVPPRICE_LB.Value = value_lb;
        MVPPRICE_LB.QuantityUnit = 'LB';
        MVPPRICE_LB.uidisplay = false;
        MVPPRICE_LB.CurrencyUnit = 'USD';

        MVPPRICE.push(MVPPRICE_LB);
        ProducePRICE.MVPPRICE = MVPPRICE;

        ProducePRICE.PRODUCENAME = PRODUCENAME;
        ProducePRICE.STATE = STATE;
        ProducePRICE.COUNTRY = COUNTRY;
        console.log('ProducePRICE', ProducePRICE); // whatever result getting it should be map however getting in array.
    }
}

我使用邮递员发送的JSON结构

{
"username": "admin2",
  "PRODUCE": "Apple",
  "STATE": "MI",
  "COUNTRY": "US",
  "MVPRATES": {
    "fuji": {
      "VARIETY": "fuji",
      "RATE": [
        {
          "UNIT": "Bussel",
          "CURRENCY": "USD",
          "VALUE": 10.25,
          "UIDISPLAY": true
        }
      ]
    },
    "gala": {
      "VARIETY": "gala",
      "RATE": [
        {
          "UNIT": "Bussel",
          "CURRENCY": "USD",
          "VALUE": 10.25,
          "UIDISPLAY": true
        }
      ]
    }
  }
}

我得到的输出:

回答如下:

@@ SudhakarRS是正确的,您正在获取MAP,您只是在MVPRATE数组中获取值,而这似乎是您的意图,看到您将其推送到这里:

MVPPRICE.push(MVPPRICE_LB);

[我在评论中提到过,但是我认为正在发生的事情是Map无法递归应用,因此当它看到MVPPRICE时,它将把您的value数组当作值,而不是Map的一部分。

我认为您可以通过以下方法解决您的问题:

MVPPRICE.concat(MVPPRICE_LB);
ProducePRICE.MVPPRICE = new Map(MVPPRICE)
发布评论

评论列表 (0)

  1. 暂无评论