0

配列内のすべての数値(オブジェクトに含まれる)をjavascript内の変数(jqueryや他のライブラリなし)で除算する簡単な方法が必要です:

var divisor = 16;
var array = [{"x":0,"y":16},{"x":16,"y":32},{"x":32,"y":48}];

期待される結果:

[{"x":0,"y":1},{"x":1,"y":2},{"x":2,"y":3}];

何か案は ?

4

7 に答える 7

5

これはあなたのためにそれをするはずです:

var divisor = 16;
var array = [{"x":0,"y":16},{"x":16,"y":32},{"x":32,"y":48}];

for(var i = 0, length = array.length; i < length; i++){
    array[i] = {'x':array[i].x/divisor,'y':array[i].y/divisor};
}

将来的にオブジェクトを拡張する可能性がある場合は、代わりに次のように拡張することをお勧めします。

for(var i = 0, length = array.length; i < length; i++){
    array[i].x /= divisor;  // `a[i].x /= d` is shorthand for `a[i].x = a[i].x / d`
    array[i].y /= divisor;
}

array[i]これには、上書きせず、他の可能なプロパティを保存できないという利点があります。

于 2013-02-08T15:34:09.580 に答える
3

とコールバックを使用した別の解決策map

var divisor = 16;
var array = [{"x":0,"y":16},{"x":16,"y":32},{"x":32,"y":48}];

array = array.map(function(v){
  return {x: v.x / divisor, y: v.y / divisor};
});  
于 2013-02-08T15:35:42.667 に答える
2

ここで深く分けます。

var divideBy = function(object, divider) {
    if (typeof(object) == 'number') return object/divider;
    for (var i in object) {
        if (object.hasOwnProperty(i)) {
            object[i] = divideBy(object[i], divider);
        }
    }
    return object;
}

var obj = [{a: 16, b: 32}, {c: 0, d: 48, e: 160}];
console.log(divideBy(obj, 16));
于 2013-02-08T15:40:29.620 に答える
2
for (var i = 0; i < array.length; i++) {
    array[i]["x"] /= divisor;
    array[i]["y"] /= divisor;
} 
于 2013-02-08T15:35:58.717 に答える
1

これは機能として使用できるので、再利用できます。オブジェクトごとに2つの変数に限定されません。

function divideArray(array, divisor) {
    var i = array.length, a, k;
    while (i) { // loop over each item in array
        a = array[--i];
        for (k in a) { // loop over each key in object
            if (a.hasOwnProperty(k)) { // ignore inherited keys
                a[k] = a[k] / divisor; // calculate
            }
        }
    }
    return array;
}

// use with your example
var divisor = 16;
var array = [{"x":0,"y":16},{"x":16,"y":32},{"x":32,"y":48}];
array = divideArray(array, divisor);
于 2013-02-08T15:37:21.000 に答える
0

これを試して

        var divisor = 16;
        var array = [{"x":0,"y":16},{"x":16,"y":32},{"x":32,"y":48}];
        var i=0;
        for(i=0;i<array.length;i++)
        {
            array[i]["y"]=array[i]["y"]/divisor;
            array[i]["x"]=array[i]["x"]/divisor;
        }
于 2013-02-08T15:35:17.923 に答える
0
var divisor = 16;
    var array = [{"x":0,"y":16},{"x":16,"y":32},{"x":32,"y":48}];
    var i=0;
    for(i=0;i<array.length;i++)
    {
        array[i]["y"]=array[i]["y"]/divisor;
        array[i]["x"]=array[i]["x"]/divisor;
    }
于 2017-08-16T14:43:44.763 に答える