我需要从每个数组的多个对象中减去一个固定值。在此示例中,您可以将某些坐标视为数组。现在第一个值应减去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;
}
答案 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);
});