我有一个名为"param"的对象,它有一个名为"item[]"的键。item[] 的值是动态插入的。
问题是当"item[]"具有单个值时,它将该值视为字符串,而不是数组的第一个索引。
例:
item[]="123";
但是当它有多个值时,它会将自己视为所需的数组,例如-
item[] = ["123","456"];
我也希望单个值也作为此数组的索引,例如
item[] = ["123"]
我该怎么做?
附言 - 这个对象是从查询字符串参数创建的,如 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
variableName[]
不是javascript语法。
由于它无法识别 [],因此如果它不抛出错误,它可能是名称的一部分。
要创建数组,您有 2 种可能性:
//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"
试试这个
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
})
}
我已经解决了-
if(typeof param['item[]'] == "string"){
param['item[]'] = [param['item[]']];
}
首先,我正在检查键是否有字符串值,如果它是字符串,那么我将其转换为数组并且它起作用了。
这是工作小提琴——
https://jsfiddle.net/r3vrxzup/