我有一个类似下面的课程;
function Request()
{
this.CompanyId;
this.Password;
this.SessionId;
this.UserId;
this.UserName;
}
我创建了一个对象并希望得到对象的字节数组;
var request = new Request();
request.UserName = GlobalProcess.SessionInfo.Server.UserName;
request.Password = GlobalProcess.SessionInfo.Server.Password;
request.CompanyId = GlobalProcess.SessionInfo.SelectedDatabase.CompanyId.toString();
request.UserId = GlobalProcess.SessionInfo.UserId.toString();
request.SessionId = GlobalProcess.SessionInfo.SessionId.toString();
var requestbinary = GetByte(request);
console.log(requestbinary);
我的GetByte
功能是;
function GetByteArrayFromStringArray(parameter)
{
var mainbytesArray = [];
for (var i = 0; i < parameter.length; i++)
mainbytesArray.push(parameter.charCodeAt(i));
return mainbytesArray;
}
在控制台中,我得到空数组。我做错了什么?
答案 0 :(得分:2)
试试这个
function GetByteArrayFromStringArray(parameter) {
for (var key in parameter) { // loop through properties
var mainbytesArray = [];
for (var i = 0; i < parameter[key].length; i++)
mainbytesArray.push(parameter[key].charCodeAt(i));
}
return mainbytesArray;
}
它遍历属性并获取theese的数组
答案 1 :(得分:1)
您正在将对象传递给期望字符串的函数(我认为)。你的对象没有“length”属性,所以循环什么都不做。
我想,你可以让函数遍历对象的属性,并从每个值的值中累积一个数组。这不会非常有用,我不认为,因为在JavaScript中你不能保证你会以任何特定的顺序迭代对象的属性。