9.1 KiB
		
	
	
	
	
	
	
	
			
		
		
	
	
			9.1 KiB
		
	
	
	
	
	
	
	
id, title, challengeType, videoUrl, localeTitle
| id | title | challengeType | videoUrl | localeTitle | 
|---|---|---|---|---|
| 587d7b7b367417b2b2512b16 | Create complex multi-dimensional arrays | 1 | Создание сложных многомерных массивов | 
Description
let nestedArray = [// верхний или первый уровень - внешний массивХотя этот пример может показаться запутанным, этот уровень сложности не является неслыханным или даже необычным при работе с большими объемами данных. Тем не менее, мы все же можем очень легко получить доступ к самым глубоким уровням массива этого комплекса с помощью скобок:
['deep'], // массив в массиве, 2 уровня глубины
[
['глубже'], ['более глубокий'] // 2 массива вложенные 3 уровня в глубину
],
[
[
['deepest'], ['deepest'] // 2 массива вложенные 4 уровня в глубину
],
[
[
['deepest-est?'] // массив вложен в 5 уровней в глубину
]
]
]
];
console.log (nestedArray [2] [1] [0] [0] [0]);И теперь, когда мы знаем, где эта часть данных, мы можем ее сбросить, если нам нужно:
// logs: самый глубокий?
nestedArray [2] [1] [0] [0] [0] = 'еще глубже';
console.log (nestedArray [2] [1] [0] [0] [0]);
// теперь журналы: еще глубже
Instructions
myNestedArray , равную массиву. Измените myNestedArray , используя любую комбинацию строк , чисел и логических элементов для элементов данных, так что он имеет ровно пять уровней глубины (помните, что внешний массив - это уровень 1). Где-то на третьем уровне, включите строку 'deep' , на четвертом уровне, включите строку 'deeper' , а на пятом уровне включите строку 'deepest' . Tests
tests:
  - text: '<code>myNestedArray</code> должен содержать только числа, булевы и строки в качестве элементов данных'
    testString: 'assert.strictEqual((function(arr) { let flattened = (function flatten(arr) { const flat = [].concat(...arr); return flat.some (Array.isArray) ? flatten(flat) : flat; })(arr); for (let i = 0; i < flattened.length; i++) { if ( typeof flattened[i] !== "number" && typeof flattened[i] !== "string" && typeof flattened[i] !== "boolean") { return false } } return true })(myNestedArray), true, "<code>myNestedArray</code> should contain only numbers, booleans, and strings as data elements");'
  - text: <code>myNestedArray</code> должен иметь ровно 5 уровней глубины
    testString: 'assert.strictEqual((function(arr) {let depth = 0;function arrayDepth(array, i, d) { if (Array.isArray(array[i])) {  arrayDepth(array[i], 0, d + 1);} else {  depth = (d > depth) ? d : depth;}if (i < array.length) {  arrayDepth(array, i + 1, d);}  }arrayDepth(arr, 0, 0);return depth;})(myNestedArray), 4, "<code>myNestedArray</code> should have exactly 5 levels of depth");'
  - text: '<code>myNestedArray</code> должен содержать ровно одно вхождение строки <code>"deep"</code> на массиве, вложенном в 3 уровня глубины'
    testString: 'assert((function howDeep(array, target, depth = 0) {return array.reduce((combined, current) => {if (Array.isArray(current)) {  return combined.concat(howDeep(current, target, depth + 1));} else if (current === target) {  return combined.concat(depth);} else {  return combined;}}, []);})(myNestedArray, "deep").length === 1 && (function howDeep(array, target, depth = 0) {return array.reduce((combined, current) => {if (Array.isArray(current)) {  return combined.concat(howDeep(current, target, depth + 1));} else if (current === target) {  return combined.concat(depth);} else {  return combined;}}, []);})(myNestedArray, "deep")[0] === 2, "<code>myNestedArray</code> should contain exactly one occurrence of the string <code>"deep"</code> on an array nested 3 levels deep");'
  - text: '<code>myNestedArray</code> должен содержать ровно одно вхождение строки <code>"deeper"</code> на массив, вложенный в 4 уровня глубины'
    testString: 'assert((function howDeep(array, target, depth = 0) {return array.reduce((combined, current) => {if (Array.isArray(current)) {  return combined.concat(howDeep(current, target, depth + 1));} else if (current === target) {  return combined.concat(depth);} else {  return combined;}}, []);})(myNestedArray, "deeper").length === 1 && (function howDeep(array, target, depth = 0) {return array.reduce((combined, current) => {if (Array.isArray(current)) {  return combined.concat(howDeep(current, target, depth + 1));} else if (current === target) {  return combined.concat(depth);} else {  return combined;}}, []);})(myNestedArray, "deeper")[0] === 3, "<code>myNestedArray</code> should contain exactly one occurrence of the string <code>"deeper"</code> on an array nested 4 levels deep");'
  - text: '<code>myNestedArray</code> должен содержать ровно одно вхождение строки <code>"deepest"</code> в массиве, вложенном в 5 уровней'
    testString: 'assert((function howDeep(array, target, depth = 0) {return array.reduce((combined, current) => {if (Array.isArray(current)) {  return combined.concat(howDeep(current, target, depth + 1));} else if (current === target) {  return combined.concat(depth);} else {  return combined;}}, []);})(myNestedArray, "deepest").length === 1 && (function howDeep(array, target, depth = 0) {return array.reduce((combined, current) => {if (Array.isArray(current)) {  return combined.concat(howDeep(current, target, depth + 1));} else if (current === target) {  return combined.concat(depth);} else {  return combined;}}, []);})(myNestedArray, "deepest")[0] === 4, "<code>myNestedArray</code> should contain exactly one occurrence of the string <code>"deepest"</code> on an array nested 5 levels deep");'
Challenge Seed
let myNestedArray = [
  // change code below this line
  ['unshift', false, 1, 2, 3, 'complex', 'nested'],
  ['loop', 'shift', 6, 7, 1000, 'method'],
  ['concat', false, true, 'spread', 'array'],
  ['mutate', 1327.98, 'splice', 'slice', 'push'],
  ['iterate', 1.3849, 7, '8.4876', 'arbitrary', 'depth']
  // change code above this line
];
Solution
// solution required