按给定值降低数组的每个数组元素

时间:2015-11-30 16:22:48

标签: javascript arrays

我需要从每个数组的多个对象中减去一个固定值。在此示例中,您可以将某些坐标视为数组。现在第一个值应减去10,第二个值减去20。

var x = 10;
var y = 20;

var data = {
    "imagePoints": [{
        "id": "BTLS5YAJHbA5QWqRP",
        "coordinates": [ 534, 242 ],
        "content": "something"
    }, {
        "id": "yXCFyWaZMbpi8EczY",
        "coordinates": [ 398, 176 ],
        "content": "anything"
    }, {
        "id": "qJz9oMNfc8BmhMmEg",
        "coordinates": [ 272, 230 ]
    }]
}

结果将是第一个点[524,222]。我如何做到这一点,因为我有问题将值返回到数据变量中:

data.forEach(function(point) {
    point.coordinates[0] - x;
    point.coordinates[1] - y;
}

2 个答案:

答案 0 :(得分:0)

我已经实现了地图

var x = 10;
var y = 20;

var arr = [x, y];

data.imagePoints.map(function (item) {
  item.coordinates = item.coordinates.map(function (coordinate, index) {
    return (coordinate - arr[index]) < 0 ? 0 : (coordinate - arr[index]);
  });
  return item;
});

console.log(data);

答案 1 :(得分:0)

这很简单:你只需1)遵循数据源的实际结构,2)重新分配值:

data.imagePoints.forEach(function(point) { 
  point.coordinates[0] -= x;
  point.coordinates[1] -= y;
});

如果您还想考虑限额,则必须使用简单的作业而不是复合作业:

data.imagePoints.forEach(function(point) {
  point.coordinates[0] = Math.max(point.coordinates[0] - x, 0);
  point.coordinates[1] = Math.max(point.coordinates[1] - y, 0);
});