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

时间:2018-01-03 04:15:09

标签: javascript arrays object get

我有一个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);
  }

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

5 个答案:

答案 0 :(得分:1)

解。

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

答案 1 :(得分:0)

你可以这样做:

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

答案 2 :(得分: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());

答案 3 :(得分: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);

答案 4 :(得分: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);
      }

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