Прежде всего, я думаю, что это блестящая идея, я нашел следующее решение:
obj[layer01][gridY][gridX][shape] = function(x) { var i = parseInt(x); return i < 99 ? ++i : 0; }(obj[layer01][gridY][gridX][shape]);
Главное здесь - вызовы parseInt - и встроенная функция сделала его немного проще, но ясоздаст отдельную функцию и вызовет ее следующим образом:
var myfn = function(x) { var i = parseInt(x); return i < 99 ? ++i : 0; };
obj[layer01][gridY][gridX][shape] = myfn(obj[layer01][gridY][gridX][shape]);
Она может быть использована повторно ... но на самом деле она не отвечает на ваш вопрос - одна строка кода. Для этого используется троичный оператор - но да, он выглядит некрасиво.