这个问题在这里已有答案:
我正在创建一个图表,感谢Chart.js,在ASP.NET MVC的项目中,在视图中,我需要创建一个带有值的数组,但是数组的长度是可变的,我使用了“。填写“并且工作得很好,但在IE11中不起作用所以我需要另一种方式。
我一直在网上搜索,但我没有找到任何干净的方法去做,而且我的知识非常有限,因为我刚刚开始使用JS。
这是我使用的,但不适用于IE11
var arrayBackgroundColor = Array(@Model.Data.Count()).fill('rgba(54, 162, 235, 0.2)');
(@ Model.Data.Count()是一个整数,对应于它必须具有的长度)
这是IE11对控制台错误的回答
SCRIPT438: Object doesn't support property or method 'fill'
所以,我真的很感激另一种创建所需数组的方法。
您可以使用普通for循环
let arrayBackgroundColor =[];
for(var i = 0;i<@Model.Data.Count();i++){
arrayBackgroundColor .push('rgba(54, 162, 235, 0.2)')
});
或者你可以使用这个Polyfill
Polyfill .fill()
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/fill#Polyfill
if (!Array.prototype.fill) {
Object.defineProperty(Array.prototype, 'fill', {
value: function(value) {
// Steps 1-2.
if (this == null) {
throw new TypeError('this is null or not defined');
}
var O = Object(this);
// Steps 3-5.
var len = O.length >>> 0;
// Steps 6-7.
var start = arguments[1];
var relativeStart = start >> 0;
// Step 8.
var k = relativeStart < 0 ?
Math.max(len + relativeStart, 0) :
Math.min(relativeStart, len);
// Steps 9-10.
var end = arguments[2];
var relativeEnd = end === undefined ?
len : end >> 0;
// Step 11.
var final = relativeEnd < 0 ?
Math.max(len + relativeEnd, 0) :
Math.min(relativeEnd, len);
// Step 12.
while (k < final) {
O[k] = value;
k++;
}
// Step 13.
return O;
}
});
}
使用map
:
var arrayBackgroundColor = Array.apply(null, Array(@Model.Data.Count())).map(function(e) {
return 'rgba(54, 162, 235, 0.2)';
});