从javascript IE中的字符串创建子数组
create sub array from string in javascript IE
我有类似的字符串
var sHTMLTable = "> 24 Hrs.,2,19,20,10,27,16,26,64,246,1|> 12 Hrs.,0,0,0,0,0,0,0,0,0,0|> 8 Hrs.,0,0,0,0,0,0,0,0,0,0|> 4 Hrs.,0,0,0,0,0,0,0,0,0,0|Total,2,19,20,10,27,16,26,64,246,1"
我想把它转换成子阵列
var res = sHTMLTable.split("|").map(function (s) {
var arr = s.split(",");
return { name: arr.shift(), data: arr.map(Number) };
});
console.log(JSON.stringify(res));
这给了我完美的输出
[{"name":"> 24 Hrs.","data":[2,19,20,10,27,16,26,64,246,1]},{"name":"> 12 Hrs.","data":[0,0,0,0,0,0,0,0,0,0]},{"name":"> 8 Hrs.","data":[0,0,0,0,0,0,0,0,0,0]},{"name":"> 4 Hrs.","data":[0,0,0,0,0,0,0,0,0,0]},{"name":"Total","data":[2,19,20,10,27,16,26,64,246,1]}]
但由于我使用了.map
函数,它在IE中引发错误如何在IE中实现同样的结果
在这里查看IE中所有数组函数的解决方案的精彩答案。在上面的代码写
if (!('map' in Array.prototype)) {
Array.prototype.map= function(mapper, that /*opt*/) {
var other= new Array(this.length);
for (var i= 0, n= this.length; i<n; i++)
if (i in this)
other[i]= mapper.call(that, this[i], i, this);
return other;
};
}
或者像这个一样简单地使用jQuery.map
jQuery.map(a, function( ) { //what ever you want todo .. }
使用$.map(),因为您使用的是jQuery
var sHTMLTable = "> 24 Hrs.,2,19,20,10,27,16,26,64,246,1|> 12 Hrs.,0,0,0,0,0,0,0,0,0,0|> 8 Hrs.,0,0,0,0,0,0,0,0,0,0|> 4 Hrs.,0,0,0,0,0,0,0,0,0,0|Total,2,19,20,10,27,16,26,64,246,1"
var res = $.map(sHTMLTable.split("|"), function (s) {
var arr = s.split(",");
return { name: arr.shift(), data: $.map(arr, Number) };
});
console.log(JSON.stringify(res));
只需在两个位置用$.map
替换Array.prototype.map
:
var sHTMLTable = "> 24 Hrs.,2,19,20,10,27,16,26,64,246,1|> 12 Hrs.,0,0,0,0,0,0,0,0,0,0|> 8 Hrs.,0,0,0,0,0,0,0,0,0,0|> 4 Hrs.,0,0,0,0,0,0,0,0,0,0|Total,2,19,20,10,27,16,26,64,246,1"
var res = $.map(sHTMLTable.split("|"), function (s) {
var arr = s.split(",");
return { name: arr.shift(), data: $.map(arr, (Number)) };
});
console.log(JSON.stringify(res));
IE不支持map()。检查MDN(Mozilla开发者网络):
地图-MDN
看起来IE在版本9中添加了对map()的支持。
这是我的版本
sHTMLTable = sHTMLTable.split('|');
for(var i = 0, l = sHTMLTable.length; i < l ; i++){
temp = sHTMLTable[i].replace(',','_').split('_');
sHTMLTable[i] = {
name : temp[0],
data : temp[1]
}
}
请在此处查看http://jsfiddle.net/GvyuV/
相关文章:
- knex:根据结果创建数组的合适方法是什么
- 在javascript中创建数组,而不是if.else
- 使用来自不同循环Javascript的数据创建数组
- 尝试从计算创建数组时数组长度无效
- 循环选择标记并创建数组或字符串
- 根据 Array Javascript 中的字符串值动态创建数组名称
- 通过动态创建数组名称在单击函数中引用 javascript 数组
- 如何在不完成添加序列的情况下从rxjs创建数组
- 如何在不创建数组的情况下使用NgFor来生成矩阵UI模式
- 使用jquery从TextArea创建数组
- jquery动态创建数组
- 从现有数组创建数组
- 使用对象的副本创建数组(Javascript)
- 基于分隔符/方括号的实例创建数组
- 如何创建数组取决于是否在jQuery中设置了变量
- 使用JavaScript's Reduce从对象数组创建数组
- 在 JavaScript 中动态创建数组
- 在 javascript 中使 split() 方法使用双引号而不是单引号创建数组
- 在 $.each 函数中使用条件来创建数组
- 如何修改此代码,以便创建数组并将事件添加到数组中