在GET更新数据对象的数组中乘以单值的所有值

问题描述 投票:0回答:5

我有一个JSON对象,用于存储来自API GET请求的数据。对象中的每个对象都有两个数组。我需要乘以第二个数组(y值)。数据存储如下:

  var apiData = {
  'id1': {
    x: [],
    y: []
  },
  'id2': {
    x: [],
    y: []
  },
  'id3': {
    x: [],
    y: []
  },

等等。有50个阵列需要将它们的每个值相乘。

我明白我需要做这样的事情:

var multiplyFunction = function() {
  for (var i = 0; i < apiData.length; i++);
  [do something]
}

但是,我怎样才能将y数组中的所有元素乘以一个数字(如1,000)?我看了几个其他主题,但不清楚。谢谢!

更新:

我已经找到了一个解决方案,它将值从API数据推送到数组时相乘。像这样:

  for (var i = 0; i < data.length; i++) {
    apiDataObject[id].x.push(data[i][0]);
    /* Multiply each value by 1,000 to convert units. */
    apiDataObject[id].y.push(data[i][1] * 1000);
  }

这对于浏览器兼容性也更好。

javascript arrays object get
5个回答
1
投票

解。

var multiplier = 1000;
Object.keys(apiData).forEach(key => {
  apiData[key].y = apiData[key].y.map(item => item * multiplier);
});

0
投票

你可以这样做:

Object.keys(apiData).forEach(key => {
  // 1000 - it's a number what you need
  apiData[key].y = apiData[key].y.map(x => x * 1000)
})

0
投票

apiData不是数组,这是对象。

https://jsbin.com/sitonogoso/edit?html,js,console

// es5
var multiplyFunction = function() {
  var y = 1;


  for (key in apiData) {
    var data = apiData[key];

    // array = y;
    var array = data.y;
    for (var i = 0; i < array.length; i++) {

      // y = y * array[i];
    }
  }

  return y;
}

console.log(multiplyFunction());

0
投票

如果你不关心支持IE,那么你最好的选择是使用Object.values,然后使用Array#map

let apiData = {
  'id1': {
    x: [],
    y: [5, 8]
  },
  'id2': {
    x: [],
    y: [9, 6]
  },
  'id3': {
    x: [],
    y: [50, 31]
  }
};

let multiplier = 100;

Object.values(apiData).forEach(item => {
  item.y = item.y.map(number => number * multiplier);
});

console.log(apiData);

0
投票

我已经找到了一个解决方案,它将值从API数据推送到数组时相乘。像这样:

      for (var i = 0; i < data.length; i++) {
        apiDataObject[id].x.push(data[i][0]);
        /* Multiply each value by 1,000 to convert units. */
        apiDataObject[id].y.push(data[i][1] * 1000);
      }

这对于浏览器兼容性也更好。

© www.soinside.com 2019 - 2024. All rights reserved.