我有一个名为" param"的对象它有一个名为" item []"的键。 item []的值是动态插入的。
问题是" item []"它有一个值,它将该值视为字符串而不是数组的第一个索引。
示例:
item[]="123";
但是当它有多个值时,它会将自己视为一个所需的数组,例如 -
item[] = ["123","456"];
我希望单个值也作为此数组的索引,如
item[] = ["123"]
我该怎么做?
P.S。 - 这个对象是从http://example.com/def?item[]=123&item[]=456之类的查询字符串参数创建的,然后当我提取查询字符串时,它将这些参数作为对象的键返回
我以这种方式提取查询字符串(Javascript) -
var param = $location.search();
console.log('Param');
console.log(param);//Returns Object{item[]=[2]} in console
答案 0 :(得分:3)
这是因为variableName[]
不是javascript语法
由于它不识别[],如果它没有抛出错误,它可能是名称的一部分。
要创建数组,您有两种可能:
//Contsructor
var ar = new Array(); //empty array
//Literal
var ar = []; //same as above
var ar = [0,1,2,3]; //array of length 4
var ar = new Array(4); //empty array of length 4
访问或设置
var ar[0] = "value"
答案 1 :(得分:1)
试试这个
queryString = ["123"];
queryString = ["123","432","456"];
if(queryString.length==1){
item.push(queryString[0]);
}else{
angular.forEach(queryString,function(value,key){
item.push(value);//push only value
})
}
答案 2 :(得分:0)
我已经解决了 -
if(typeof param['item[]'] == "string"){
param['item[]'] = [param['item[]']];
}
首先我检查密钥是否有字符串值,如果是字符串,那么我将其转换为数组并且它有效。
这是工作小提琴 -