为什么对象键的第一个值被视为字符串 - AngularJs
Why an object key's first value is treated as a string - AngularJs
我有一个名为 "param" 的对象,它有一个名为 "item[]" 的键。 item[] 的值是动态插入的。
问题是当 "item[]" 有一个值时,它将该值视为字符串而不是数组的第一个索引。
示例:
item[]="123";
但是当它有多个值时,它会将自己视为一个所需的数组,示例-
item[] = ["123","456"];
我希望单个值也作为此数组的索引,如
item[] = ["123"]
我该怎么做?
P.S。 - 这个对象是从 http://example.com/def?item[]=123&item[]=456 这样的查询字符串参数创建的,然后当我提取查询字符串时,它 returns 这些参数作为对象的键
我正在以这种方式提取查询字符串(Javascript)-
var param = $location.search();
console.log('Param');
console.log(param);//Returns Object{item[]=[2]} in console
试试这个
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
})
}
这是因为 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"
我已经解决了-
if(typeof param['item[]'] == "string"){
param['item[]'] = [param['item[]']];
}
首先我检查键是否有一个字符串值,如果它是字符串然后我将它转换成一个数组并且它起作用了。
这是工作 fiddle -
我有一个名为 "param" 的对象,它有一个名为 "item[]" 的键。 item[] 的值是动态插入的。
问题是当 "item[]" 有一个值时,它将该值视为字符串而不是数组的第一个索引。
示例:
item[]="123";
但是当它有多个值时,它会将自己视为一个所需的数组,示例-
item[] = ["123","456"];
我希望单个值也作为此数组的索引,如
item[] = ["123"]
我该怎么做?
P.S。 - 这个对象是从 http://example.com/def?item[]=123&item[]=456 这样的查询字符串参数创建的,然后当我提取查询字符串时,它 returns 这些参数作为对象的键
我正在以这种方式提取查询字符串(Javascript)-
var param = $location.search();
console.log('Param');
console.log(param);//Returns Object{item[]=[2]} in console
试试这个
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
})
}
这是因为 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"
我已经解决了-
if(typeof param['item[]'] == "string"){
param['item[]'] = [param['item[]']];
}
首先我检查键是否有一个字符串值,如果它是字符串然后我将它转换成一个数组并且它起作用了。
这是工作 fiddle -