7.6 KiB
7.6 KiB
id | title | challengeType | videoUrl | localeTitle |
---|---|---|---|---|
587d7b7b367417b2b2512b16 | Create complex multi-dimensional arrays | 1 | Crear complejos arreglos multidimensionales. |
Description
Deje nestedArray = [// top, o primer nivel: la matriz más externaSi bien este ejemplo puede parecer complicado, este nivel de complejidad no es inaudito, o incluso inusual, cuando se trata de grandes cantidades de datos. Sin embargo, aún podemos acceder fácilmente a los niveles más profundos de una matriz de este complejo con notación de corchetes:
['deep'], // una matriz dentro de una matriz, 2 niveles de profundidad
El
['deep'], ['deep'] // 2 arreglos anidados 3 niveles de profundidad
]
El
El
['deepest'], ['deepest'] // 2 arrays anidados 4 niveles de profundidad
]
El
El
['deepest-est?'] // una matriz anidada 5 niveles de profundidad
]
]
]
];
console.log (nestedArray [2] [1] [0] [0] [0]);Y ahora que sabemos dónde se encuentra ese dato, podemos restablecerlo si necesitamos:
// logs: deepest-est?
nestedArray [2] [1] [0] [0] [0] = 'deep still still';
console.log (nestedArray [2] [1] [0] [0] [0]);
// ahora registra: aún más profundo
Instructions
myNestedArray
, igual a una matriz. Modifique myNestedArray
, utilizando cualquier combinación de cadenas , números y valores booleanos para los elementos de datos, de modo que tenga exactamente cinco niveles de profundidad (recuerde, la matriz más externa es el nivel 1). En algún lugar en el tercer nivel, incluye la cadena 'deep'
, en el cuarto nivel, incluyen la cadena 'deeper'
, y en el quinto nivel, incluyen la cadena 'deepest'
. Tests
tests:
- text: '<code>myNestedArray</code> debe contener solo números, booleanos y cadenas como elementos de datos'
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> debe tener exactamente 5 niveles de profundidad
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> debe contener exactamente una aparición de la cadena <code>"deep"</code> en una matriz anidada con 3 niveles de profundidad
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> debe contener exactamente una aparición de la cadena <code>"deeper"</code> deep <code>"deeper"</code> en una matriz anidada con 4 niveles de profundidad
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> debe contener exactamente una aparición de la cadena <code>"deepest"</code> en una matriz anidada con 5 niveles de profundidad
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