为什么对象键的第一个值被视为字符串 - 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"]
我该怎么做?
附言 - 这个对象是从查询字符串参数创建的,如 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/
相关文章:
- AngularJS:获取链接中没有哈希的查询字符串值
- 如何将angularjs中的javascript字符串输出为循环数组
- AngularJS,如何更改查询字符串
- $scope变量被视为字符串AngularJs
- 如何在angularjs中实现html格式的字符串
- AngularJS-ng使用字符串索引在数组上重复
- 使用javascript或angularjs特定过滤器搜索字符串中第一个img标记的json值
- 用Angularjs+Typescript将GZip Json字符串解压为普通Json字符串
- AngularJS中的数组未拾取字符串值
- 如何使用AngularJS应用基于Json字符串响应的条件CSS类
- 如何在AngularJS URL中的hashtag(#)前面加上字符串
- 在AngularJS中创建JSON字符串
- 将Byte数组转换为Angularjs中的Base64字符串
- 从输入中获取字符串,并在AngularJS中发出AJAX请求
- Mysql日期时间字符串格式为angularjs中的可读日期
- AngularJs将查询字符串发布到c#控制器
- 将模板呈现为受信任的 HTML 字符串 [AngularJS]
- 为什么对象键的第一个值被视为字符串 - AngularJs
- 未捕获错误:[$http:badreq] Http 请求配置 url 必须是字符串 (AngularJS)
- ng-model with $watch只响应完整字符串(AngularJS)