Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 当结果应该是映射时获取数组作为结果?_Javascript_Node.js - Fatal编程技术网

Javascript 当结果应该是映射时获取数组作为结果?

Javascript 当结果应该是映射时获取数组作为结果?,javascript,node.js,Javascript,Node.js,我正在尝试使用MAP到node.js程序中,我得到了最终的结果,但它在数组中,但我需要在MAP中。我已经写了一些代码来使用map,但它并没有像预期的那样工作 请找到下面的程序 function CreateProduceMVPRateAsset(data, callback) { var ProducePRICE = {}; var MVPPRICE = []; var MVPPRICE_BS = {}; var MVPPRICE_LB = {}; co

我正在尝试使用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.
    }
}
我正在使用postman发送的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
        }
      ]
    }
  }
}
我得到的输出:


@sudhakars是对的,你正在拿回你的地图,你只是在MVPRATE的数组中获取你的值,看起来这几乎是你的意图,看到你推到这里:

MVPPRICE.push(MVPPRICE_LB);
我在评论中提到过,但我认为现在发生的事情是映射没有递归应用,因此当它看到MVPPRICE时,它将您的值数组视为值,而不是映射的一部分

我认为你想做的事情可以通过以下方式解决:

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

我个人根本不明白这个问题,你能更具体一点吗?是否要使用Array.map()函数?通过邮递员发送的数据与此有什么关系?抱歉@poepje我是node.js新手我从未在node.js中使用过map我很困惑为什么我要在ProducePrice中使用数组,但是我想在其中使用map。我不知道如何才能像使用Array.map()函数一样获得它您正在获得一个映射。键是
MVPRATE
,值是一个速率数组。如果我理解正确。。。map()是一个函数,您可以在其中循环数组。用法类似于
myArray.map((项,索引)=>{//do something})
。您还可以在函数中返回一些东西(每次迭代),以从该函数的结果中生成一个新数组。感谢@pinkwaffles提到的所有问题