Функция javascript возвращает массив

Как вернуть массив из функции с & ?

Я хочу получить от второй функции не только шифрованные данные, но и хэш, и ключ.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
ed.encrypt = function() { $('cipherinfo').innerHTML = ' ' // Очистка строки? var type = $('cipheralg').value // Получаем длину пароля из окна опций var text = $('plaintext').value.bytes('ascii') // Получаем текст для шифровки var pass = $('password').value.bytes('ascii') // Получаем пароль для шифровки var hash = [] // Массив приёмник для хеша var key = [] // Массив приёмник для ключа var ciph = aes.encrypt(type, text, pass, hash, key) // Зашифровали, получили шифрованные данные $('cipher').value = bits.hex(ciph, 1) // Вывели данные на окно в 16ричной системе (HEX) $('ciphers').value = ''.frombytes(ciph) // Вывели данные на окно как простой текст $('passhash').value = hash // Вывели хеш в окно $('passkey').value = key // Вывели ключ в окно }
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
aes.encrypt = function(type, data, password, &hash, &key) { aes.select(type) // Выбор длины ключа hash = md5.hash(password) // MD5 хеш имеет длину 128 бит key = aes.keyexpansion(hash) // Преобразуем хеш в ключ AES var length = bits.split(data.length, 16) // Разбить текст на блоки по 16 байт var result = aes.cipher(length, key) // Шифруем блоки паролем for(var i = 0; i  data.length; i += 16) // for(new i = 0; i < strlen(data); i += 16){ // var input = data.slice(i, i + 16) // new input = // while(input.length  16) input.push(0) // // result = result.concat(aes.cipher(input, key)) // } // return result // }

Как вернуть массив в данной функции ? Или как записать массив в переменную ?
#pragma once #include "stdafx.h" const int S = 49; int bin2; int decbin(int a, int.

Как вернуть массив из функции?
у меня есть две функции: Одна должна возвращать три числа, а вторая двумерный массив 10Х10; Как.

Эксперт HTML/CSS

артист, потому, что это на валидный код

Добавлено через 35 секунд
это в с++ можно поставить & перед параметром и получить ссылку на него, а в js так нельзя

А если зарегистрировать массив result как трёхмерный?

var result = {hash, key, aes.cipher(length, key)}

Только не пойму как потом записывать в 3ю ячейку.

result[2] = result.concat(aes.cipher(input, key))
var result = { h:hash, k:key, b:aes.cipher(length, key) }
result.b = result.concat(aes.cipher(input, key))

Эксперт HTML/CSS

артист, ну во-первых уберите эти &
возвращать можно массив данных, в котором будут результаты вашей работы(ну до этого вы и сами догадались)

Эксперт HTML/CSS

temkasky, в javascript не нужны точки с запятой, мы не обязаны их писать, это сильно помогает

а чем вам не нравится создание строки из байтов?
ну согласен тупая система, взять и поставить этот метод в прототип, я бы поставил как свойство конструктора класса String, как например .fromCharCode

артист, а вообще, код нельзя попробовать в консоли, это плохо
вы скажите какие вы библиотеки используете
то, к чему придрался temkasky — не стандартный метод js, прошу сказать какие библиотеки используете

Тут нет никаких библиотек, только скрипты:

script type="text/javascript" src="ext.js">/script> script type="text/javascript" src="md5.js">/script> script type="text/javascript" src="bits.js">/script> script type="text/javascript" src="gf28.js">/script> script type="text/javascript" src="aes.js">/script>

Переделал маленько, добавил 192 и 256 битное шифрование(собственно там только кнопки, да передать в функцию нужно было).

Эксперт HTML/CSS

артист, скажем так
все инородне скрипты(которые ты не сам написал) я называю библиотеками или плагинами для библиотек

Хотел ещё спросить, как понять вот такой кодец:

В функцию передаётся одномерный массив из 4 ячеек:

aes.addroundkey(s, w.slice(40, 44))
aes.addroundkey = function(s, w) { for (var c = 0; c  4; c++) { for (var r = 0; r  4; r++) s[r][c] = s[r][c] ^ w[c][r] } }

Эксперт HTML/CSS

Блин, ну чего оно не пашет, уже и так, и так пробовал.

aes.encrypt = function(type, data, password, h, k) { aes.select(type) // Устанавливаем длину ключа var hash = md5.hash(password) // Получаем из пароля MD5 хеш (длина 128 бит) var key = aes.keyexpansion(hash) // Преобразуем хеш в ключ AES h = hash.slice() k = key.slice() . }
var hash = [] // Массив приёмник для хеша var key = [] // Массив приёмник для ключа var ciph = aes.encrypt(type, text, pass, hash, key) // Зашифровали, получили шифрованные данные

Эксперт HTML/CSS

артист, вы к строкам применяете метод slice, которого у них нету
посмотрите какие ошибки выдаёт консоль, прочитайте что это за ошибки и исправьте их
это работа называется дебагом

а если вы хотите получить из строки массив, где элементами будут чары(то есть буквы) то вам нужно знать про call

var str="abcde"; var chars=[].slice.call(str) // ["a","b","c","d","e"]

Сделал, по другому немного ))

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
aes.encrypt = function(type, data, password) { aes.select(type) // Устанавливаем длину ключа var hash = md5.hash(password) // Получаем из пароля MD5 хеш (длина 128 бит) var key = aes.keyexpansion(hash) // Преобразуем хеш в ключ AES var length = bits.split(data.length, 16) // Разбить текст на блоки по 16 байт var result = aes.cipher(length, key) // Шифруем первый блок паролем for(var i = 0; i  data.length; i += 16) // Проходим циклом по массиву с шагом в 16 ячеек до его конца { var input = data.slice(i, i + 16) // Записываем в массив по 16 байт шифрованной информации while(input.length  16) input.push(0) // Если длина строки меньше 16ти байт - добавляем нули result = result.concat(aes.cipher(input, key)) // Шифруем блок паролем } return {h:hash, k:key, b:result} // Возвращаем хеш, ключ и шифрованные данные }
var type = $('cipheralg').value // Получаем длину пароля AES из окна опций var text = $('plaintext').value.bytes('ascii') // Получаем текст для шифровки var pass = $('password').value.bytes('ascii') // Получаем пароль для шифровки var ciph = aes.encrypt(type, text, pass) // Зашифровали, получили шифрованные данные $('cipher').value = bits.hex(ciph.b, 1) // Вывели данные на окно в 16ричной системе (HEX) $('ciphers').value = ''.frombytes(ciph.b) // Вывели данные на окно как простой текст $('passhash').value = bits.hex(ciph.h, 1) // Вывели хеш в окно $('passkey').value = bits.hex(ciph.k, 1) // Вывели ключ в окно

Источник

Возврат нескольких значений из метода в JavaScript

В этом посте мы обсудим, как вернуть несколько значений из метода в JavaScript.

1. Вернуть массив

Идея состоит в том, чтобы упаковать возвращаемые значения внутри массива и вернуть этот массив из метода. В следующем примере кода показано, как это реализовать:

В следующем коде используется присваивание деструктуризации распаковывать значения из массивов в соответствующие переменные.

2. Вернуть объект

Другой подход состоит в том, чтобы упаковать возвращаемые значения внутри объекта с соответствующими метками и вернуть объект из метода. В следующем примере кода показано, как это реализовать:

Код можно упростить, используя присваивание деструктуризации:

Это все о возврате нескольких значений из метода в JavaScript.

Средний рейтинг 5 /5. Подсчет голосов: 22

Голосов пока нет! Будьте первым, кто оценит этот пост.

Сожалеем, что этот пост не оказался для вас полезным!

Расскажите, как мы можем улучшить этот пост?

Спасибо за чтение.

Пожалуйста, используйте наш онлайн-компилятор размещать код в комментариях, используя C, C++, Java, Python, JavaScript, C#, PHP и многие другие популярные языки программирования.

Как мы? Порекомендуйте нас своим друзьям и помогите нам расти. Удачного кодирования 🙂

Этот веб-сайт использует файлы cookie. Используя этот сайт, вы соглашаетесь с использованием файлов cookie, нашей политикой, условиями авторского права и другими условиями. Читайте наши Политика конфиденциальности. Понятно

Источник

Как вывести массив из функции JavaScript?

Мне нужно иметь в одном массиве значения с нескольких XML-страниц, т.е. функция должна проходить по page1.xml, page2.xml, page3.xml.

Подскажите, друзья знатоки, в чем моя ошибка. Поправьте руки. Спасибо.

my_func('http://site.ru/page1.xml'); console.info( array ); // undefined

bingo347

Возвращайте результат в колбэк или используйте промисы
ajax асинхронный, нельзя получить здесь сейчас то, что будет когда-то потом, в неопределенном будущем

abyrkov

Я думаю, создать на эту тему статью/репозиторий, что бы можно было со спокойной совестью отдавать им. А не объяснять в стопицотый раз

dmitry_luzanov

abyrkov

abyrkov

Ваш код в третей функции исполняется во второй(которую мы вызываем), в первой ни array, ни return array доступен не будет. Более того, если сделать так:

Будет возвращать пустой массив!
В чем же дело? Вы отправляете запрос на сервер, а код исполняется дальше. То есть третья функция может быть вызвана в любой момент — когда придет ответ от сервера. Можно использовать сихронный вариант, но это плохая идея.
Решения, как всегда, два: callback и Promise.
Решение с callback:

function(callback) < func(function() < var array = new Array(); callback(array); >) > // Использование func(function(array) < console.log(array); >);
function() < return new Promise(function(resolve) < func(function() < var array = new Array(); resolve(array); >); >); > // Использование func().then(function(array) < console.log(array) >);

Источник

Как функцией в JS возвратить массив (объект)?

eca28a6df3494898a52a44f25dbbd7a5.jpg

Как функцией в JS возвратить массив (объект)?
Пробую возвратить — не получается. Вот код:

$(document).ready( function() < console.log(getStreets('Вовчинець') ); >); function getStreets(city) < $.post( 'export/getStreets.php', < misto_selo_key: city >) .done( function( data ) < var availableTags = data.split(","); var availableTagsArr = []; availableTags.forEach(function (street_name) < parts = street_name.split("&"); availableTagsArr.push(); >); console.log(availableTagsArr); return availableTagsArr; >); >

tratotui

Что вы собственно ждете, когда функция getStreets ничего не возвращает — это раз. А второй момент — это то, что загрузка данных может наступить после события ready

Ребята, не в асинхронности дело, а в том что return срабатывает для $.post метода ( спасибо тебе tratotui), а не для getStreets(city), так как он находиться внутри метода.
Я поборол эту проблему следующим путем: перед $.post методом создал массив пустой, после неасинхронного запроса возвращаю массив внутри функции getStreets. Собственно всё. Очень благодарен за помощь!

pavel_salauyou

никак это ajax, как вариант можно передавать callback функцию, например,

getStreets('Вовчинець', function(response) < console.log(response); >) а в методе done вызывать её function getStreets(city, callback) < // . .done( function( data ) < // . callback(availableTagsArr); >

TekVanDo

$.post — асинхронный метод — и данные в колбэк done приходят позже чем срабатывает console.log (первый), т.ч. в данном конкретно примере вернуть нельзя. Слушайте событие или используйте промисы.

Войдите, чтобы написать ответ

Как подключить yookassa на сайте?

Источник

Читайте также:  Java list содержит элемент
Оцените статью