如何使用JS在数组中声明数组索引值?

时间:2018-10-25 10:22:54

标签: javascript d3.js

我已经在函数内部初始化了一个数组

function initColor(r) { 

 r[0].color = "#007FFF", r[1].color = "#A142FF", r[2].color = "#FF85C2", r[3].color = "#FFA142", r[4].color = "#FF4242";

    for (var o = 5; o < r.length; o++) {
        var t = d3.color(r[o % 4 + 1].color);
        r[o].color = t.brighter(1.5).toString()
    }
}

当我尝试调用函数initColor()时,出现类似错误

  

TypeError:无法设置未定义的属性“颜色”

我的代码有什么错误?

1 个答案:

答案 0 :(得分:1)

据我现在所了解和测试的情况,我认为这里犯了一些错误。

首先,如注释所示,您的数组必须包含对象。否则,您将无法更改(或设置)颜色属性。

r[0].color = "#007FFF", r[1].color = "#A142FF", r[2].color = "#FF85C2", r[3].color = "#FFA142", r[4].color = "#FF4242";

在这里,您尝试设置/更改给定数组中前5个元素的color属性。如果仅缺少这些元素之一(或不是object类型),则将引发您提到的错误。

但是您的代码中还有另一个错误:

for (var o = 5; o < r.length; o++) {
    var t = d3.color(r[o % 4 + 1].color);
    r[o].color = t.brighter(1.5).toString()
}

变量o用5初始化。由于您仅尝试设置数组中前5个元素的颜色,我想您知道,在调用此函数时,您的数组仅包含5个元素。 / p>

o将等于r.length,因此将永远不会使用循环。