Javascript 将数组的每个数组元素降低一个给定值
我需要从多个对象的每个数组中减去一个固定值。在本例中,可以将一些坐标视为数组。现在,第一个值应减去10,第二个值应减去20Javascript 将数组的每个数组元素降低一个给定值,javascript,arrays,Javascript,Arrays,我需要从多个对象的每个数组中减去一个固定值。在本例中,可以将一些坐标视为数组。现在,第一个值应减去10,第二个值应减去20 var x = 10; var y = 20; var data = { "imagePoints": [{ "id": "BTLS5YAJHbA5QWqRP", "coordinates": [ 534, 242 ], "content": "something" }, { "id": "y
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 ]
}]
}
结果将是第一个点[524222]
。我如何做到这一点,因为我在获取数据变量中的值时遇到问题:
data.forEach(function(point) {
point.coordinates[0] - x;
point.coordinates[1] - y;
}
我已经用map实现了
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);
var x=10;
变量y=20;
var-arr=[x,y];
data.imagePoints.map(功能(项){
item.coordinates=item.coordinates.map(函数(坐标、索引){
返回值(坐标-arr[index])<0?0:(坐标-arr[index]);
});
退货项目;
});
控制台日志(数据);
非常简单:您只需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);
});
data.imagePoints.forEach(函数(点){point.coordinates[0]-=x;//依此类推}
@raina77现在我非常喜欢这个解决方案。请将此作为一个答案发布。我如何防止负值?-10应该变成0…在这种情况下应该使用什么方法?Map还是forEach?性能?使用.Map
而不指定其结果几乎总是一种反模式,因此首先.Map
没有意义f internal.map
也是可疑的:您更改现有数组的元素,而不是基于它创建另一个数组。