簡體   English   中英

將數組的每個數組元素降低給定值

[英]lower each array-element of an array by a given value

我需要從每個數組中減去多個對象的固定值。 在此示例中,您可以看到一些坐標作為數組。 現在,第一個值應減去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;
}

我已經用地圖實現了

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)遵循數據源的實際結構,以及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);
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM