Есть ли способ проверить, являются ли два JavaScript ArrayBuffers равными? Я хотел бы написать тест для метода компоновки сообщений. Единственный способ, которым я нашел, - преобразовать ArrayBuffer в строку, а затем сравнить. Я что-то пропустил?Как проверить, являются ли два массива в Javascript равными?
После кода дает ложное, даже если я думаю, что это должно быть правдой:
(function() {
'use strict';
/* Fill buffer with data of Verse header and user_auth
* command */
var buf_pos = 0;
var name_len = 6
var message_len = 4 + 1 + 1 + 1 + name_len + 1;
var buf = new ArrayBuffer(message_len);
var view = new DataView(buf);
/* Verse header starts with version */
view.setUint8(buf_pos, 1 << 4); /* First 4 bits are reserved for version of protocol */
buf_pos += 2;
/* The lenght of the message */
view.setUint16(buf_pos, message_len);
buf_pos += 2;
buf_pos = 0;
var buf2 = new ArrayBuffer(message_len);
var view2 = new DataView(buf);
/* Verse header starts with version */
view2.setUint8(buf_pos, 1 << 4); /* First 4 bits are reserved for version of protocol */
buf_pos += 2;
/* The lenght of the message */
view2.setUint16(buf_pos, message_len);
buf_pos += 2;
if(buf == buf2){
console.log('true');
}
else{
console.log('false');
}
}());
Если я пытаюсь сравнить вид и VIEW2 это ложь снова.
Спасибо. Это именно то, что мне нужно сделать - реализовать набор классов для обработки сообщений через websocket. Я хотел бы, чтобы методы и конечный автомат были покрыты испытаниями. – JirkaV
Угадайте ... это сработает, если мы преобразуем оба массива в String (скажем, базу 64), а затем сравним их – Amarsh
Это может быть, но я сомневаюсь, что это было бы более эффективно. –