как динамически изменить значение поля массива, когда поле пустое - PullRequest
2 голосов
/ 26 марта 2019

вот код, который я написал:

for (let i = 0; i < result.length; i++) {
    if (result[i].mkp == ' ') {
        //the first time that a empty field happen
        //the array position is filled with "FRANQUIAS"
        result[i].mkp = "FRANQUIAS";
    }
    if (result[i].mkp == ' ') {
        //the second time that a empty field happen
        //the array position is filled with "TELEVENDAS"
        result[i].mkp = "TELEVENDAS";
    }
    if (result[i].mkp == ' ') {
        //the third time that a empty field happen
        //the array position is filled with "OCC"
        result[i].mkp = "OCC";
    }
}

Но я не могу понять сам, как я могу достичь своей цели, меняя пустые поля на эти три поля.Может ли кто-нибудь мне помочь?

Ответы [ 2 ]

3 голосов
/ 26 марта 2019

Сохраните дополнительную переменную счетчика, которая увеличивается, когда происходит пустое поле.

// variable for keeping track of empty field
let c = 0;

for (let i = 0; i < result.length; i++) {
    // chek value or couter in addition to your condition
    if (c === 0 && result[i].mkp == ' ') {
        //the first time that a empty field happen
        //the array position is filled with "FRANQUIAS"
        result[i].mkp = "FRANQUIAS";
        // increment counter value whenever empty field occurs
        c++;
    }
    else if (c === 1 && result[i].mkp == ' ') {
        //the second time that a empty field happen
        //the array position is filled with "TELEVENDAS"
        result[i].mkp = "TELEVENDAS";
        c++;
    }
    else if (c === 2 && result[i].mkp == ' ') {
        //the third time that a empty field happen
        //the array position is filled with "OCC"
        result[i].mkp = "OCC";
        c++;
    }
}

Вы даже можете упростить код, используя массив, содержащий эти значения.

// variable for keeping track of empty field
let c = 0;
// array which contains the value
const val = [ 'FRANQUIAS', 'TELEVENDAS', 'OCC'];

for (let i = 0; i < result.length; i++) {
     // check counter is less than 3(update if there is more possibility or use c < val.length)
     // and check value is empty
     if (c < 3 && result[i].mkp == ' ') {
        // update value with corresponding value in array 
        // and increment, where `c++` returns current value and increments 
        result[i].mkp = val[c++];
    }
}
2 голосов
/ 26 марта 2019

Вы можете использовать генератор для ваших значений замены, затем использовать map с spread syntax:

const input = [{ mkp: 'not empty' }, { mkp: ' ' }, { mkp: ' ' }, { mkp: 'something' }, { mkp: ' ' }, { mkp: 'something else' }];

const replacement = (function* () {
  yield 'FRANQUIAS';
  yield 'TELEVENDAS';
  yield 'OCC';
})();

const result = input.map(o => ({ ...o, mkp: o.mkp === ' ' ? replacement.next().value : o.mkp }));
console.log(result);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...