我编写了这段代码,应该解析给定的paramUnparsed(应该是以下形式的数组: [key1 = val1,key2 = val2,..,keyn = valn] ) 。
function parseParams(paramUnparsed){
var params = [];
for ( var j = 0; j < paramUnparsed.length; j++) {
if (paramUnparsed[j].split('=').length < 2) {
// error ! bad input structure, ignoring params -
params = undefined;
break; // we don't have to return error, depending
// on the function called and given params.
}
//else {
var key = paramUnparsed[j].split('=')[0];
var value = paramUnparsed[j].split('=')[1];
params[key] = value;
//}
}
console.log("In parseParams, params are: "+ concatObject(params));//DEBUG 1
console.log("In parseParams, params length is: "+ params.length);//DEBUG 2
return params;
}
我该怎么做,仍然可以确定我正在创建的数组的长度?我总是在'DEBUG 2'打印输出上得到'0'......
答案 0 :(得分:11)
创建的“params”数组是一个关联数组。 如果要获取关联数组的长度,请使用
Object.keys(params).length;
答案 1 :(得分:3)
您正在创建一个数组,但您没有将其用作数组。您正在使用它作为对象,它作为一个数组也是一个对象,但它意味着数组的长度保持为零,因为您没有添加任何数组项。
创建一个对象,并计算您添加的项目以获取计数:
function parseParams(paramUnparsed){
var params = {}, cnt = 0;
for (var j = 0; j < paramUnparsed.length; j++) {
if (paramUnparsed[j].split('=').length < 2) {
// error ! bad input structure, ignoring params -
params = undefined;
break; // we don't have to return error, depending
// on the function called and given params.
}
var key = paramUnparsed[j].split('=')[0];
var value = paramUnparsed[j].split('=')[1];
params[key] = value;
cnt++;
}
console.log("In parseParams, params are: "+ concatObject(params));//DEBUG 1
console.log("In parseParams, params length is: "+ cnt);//DEBUG 2
return params;
}
答案 2 :(得分:1)
你并没有真正构建一个数组。数组不应该有键。你可以使用这样的对象:
var params = {};
但这不会解决您的.length
问题。
您还可以做的是构建一个对象数组,其中每个对象都包含一个键和值。像这样:
function parseParams(paramUnparsed){
var params = [];
for (var j = 0; j < paramUnparsed.length; j++) {
if (paramUnparsed[j].split('=').length < 2) {
params = undefined;
break;
}
var key = paramUnparsed[j].split('=')[0];
var value = paramUnparsed[j].split('=')[1];
params.push({ key: key, value: value });
}
// use like: `params[0].key` etc
return params;
}
答案 3 :(得分:0)
这有点奇怪。 这实际上是在一起的。
var arr = [];
arr["test"] = "something";
arr[arr.length]=arr["test"];
现在,您可以按键或按索引遍历一个键值数组。 而且length属性是可用的。