| 4154 | // arr0 is source array, arr1 is target array. |
| 4155 | // Do some preprocess to avoid error happened when interpolating from arr0 to arr1 |
| 4156 | function fillArr(arr0, arr1, arrDim) { |
| 4157 | var arr0Len = arr0.length; |
| 4158 | var arr1Len = arr1.length; |
| 4159 | if (arr0Len !== arr1Len) { |
| 4160 | // FIXME Not work for TypedArray |
| 4161 | var isPreviousLarger = arr0Len > arr1Len; |
| 4162 | if (isPreviousLarger) { |
| 4163 | // Cut the previous |
| 4164 | arr0.length = arr1Len; |
| 4165 | } |
| 4166 | else { |
| 4167 | // Fill the previous |
| 4168 | for (var i = arr0Len; i < arr1Len; i++) { |
| 4169 | arr0.push( |
| 4170 | arrDim === 1 ? arr1[i] : arraySlice.call(arr1[i]) |
| 4171 | ); |
| 4172 | } |
| 4173 | } |
| 4174 | } |
| 4175 | // Handling NaN value |
| 4176 | var len2 = arr0[0] && arr0[0].length; |
| 4177 | for (var i = 0; i < arr0.length; i++) { |
| 4178 | if (arrDim === 1) { |
| 4179 | if (isNaN(arr0[i])) { |
| 4180 | arr0[i] = arr1[i]; |
| 4181 | } |
| 4182 | } |
| 4183 | else { |
| 4184 | for (var j = 0; j < len2; j++) { |
| 4185 | if (isNaN(arr0[i][j])) { |
| 4186 | arr0[i][j] = arr1[i][j]; |
| 4187 | } |
| 4188 | } |
| 4189 | } |
| 4190 | } |
| 4191 | } |
| 4192 | |
| 4193 | /** |
| 4194 | * @param {Array} arr0 |