// Временная сложность — O(n + k), где:// - n — длина строки prop// - k — количество элементов в массиве props (количество свойств)// Пространственная сложность — O(k), где k — количество элементов в массиве props.function getProp(obj, prop) { const props = prop.split('.'); // O(n) - где n длина строки prop let curObject = obj; for (let i = 0; i < props.length; i++) { // O(k) - где k количество элементов в props curObject = curObject[props[i]]; if (!curObject) break; } return curObject;}
Альтернативное решение (while + shift)
// Временная сложность: O(n + k²)// - split: O(n)// - while: k итераций// - shift внутри: k + (k-1) + (k-2) + ... + 1 = k(k+1)/2 = O(k²)// Пространственная сложность: O(k)function getProp(obj, prop) { const props = prop.split('.'); // O(n) - где n длина строки prop let curObject = obj; while (props.length) { // O(k) итераций - где k количество элементов в props curObject = curObject[props.shift()]; // O(p) - где p текущая длина массива if (!curObject) { break; } } return curObject;}