Javascript 将JSON数据值键传递给函数

Javascript 将JSON数据值键传递给函数,javascript,json,function,arguments,Javascript,Json,Function,Arguments,我使用JSON对象提供的数据在画布上绘制线条: var data = { values:[ { X: "04-28", Xt: "7:45 pm", Ys: 116, Yd: 74, Yp: 0}, { X: "04-29", Xt: "2:00 am", Ys: 112, Yd: 73, Yp: 0}, // 使用一点jQuery来划清界限: c.lineWidth = 4; c.strokeStyle = '#f00'; c.beginPath(); c.moveTo(getXPixel(

我使用JSON对象提供的数据在画布上绘制线条:

var data = { values:[
{ X: "04-28", Xt: "7:45 pm", Ys: 116, Yd: 74, Yp: 0},
{ X: "04-29", Xt: "2:00 am", Ys: 112, Yd: 73, Yp: 0},
//
使用一点jQuery来划清界限:

c.lineWidth = 4;
c.strokeStyle = '#f00';
c.beginPath();
c.moveTo(getXPixel(0), getYPixel(data.values[0].Ys));
for(var i = 1; i < data.values.length; i ++) {
    c.lineTo(getXPixel(i), getYPixel(data.values[i].Ys));
}
c.stroke();
我尝试过的功能:

function drawLine(width, style, d) {
    c.lineWidth = width;
    c.strokeStyle = style;
    c.beginPath();
    c.moveTo(getXPixel(0), getYPixel(data.values[0].d));
    for(var i = 1; i < data.values.length; i ++) {
        c.lineTo(getXPixel(i), getYPixel(data.values[i].d));
    }
    c.stroke();
}
功能绘图线(宽度、样式、d){
c、 线宽=宽度;
c、 strokeStyle=样式;
c、 beginPath();
c、 moveTo(getXPixel(0),getYPixel(data.values[0].d));
对于(变量i=1;i

不起作用。没有错误,但没有画线。如果我直接在函数中输入'y',它确实有效。如何将该位作为参数传递?

您不需要
values[I]
d
属性,您需要
d
保存的字符串值属性。您需要使用
obj[d]
,而不是像这样使用
obj.d

function drawLine(width, style, d) {
    c.lineWidth = width;
    c.strokeStyle = style;
    c.beginPath();
    c.moveTo(getXPixel(0), getYPixel(data.values[0][d]));
    for(var i = 1; i < data.values.length; i ++) {
        c.lineTo(getXPixel(i), getYPixel(data.values[i][d]));
    }
    c.stroke();
}

c
变量是否可从
drawLine()
访问?您的data.values也不会做任何事情……因为您没有将“data”数组传递到函数中……您需要传入该数组,然后循环并绘制感谢您的精彩解释!:)
function drawLine(width, style, d) {
    c.lineWidth = width;
    c.strokeStyle = style;
    c.beginPath();
    c.moveTo(getXPixel(0), getYPixel(data.values[0][d]));
    for(var i = 1; i < data.values.length; i ++) {
        c.lineTo(getXPixel(i), getYPixel(data.values[i][d]));
    }
    c.stroke();
}
var obj = { a:1, b:2, c:3 };
console.log(obj.a);    // 1
console.log(obj['a']); // 1    
var a = 'b';
console.log(obj.a);    // 1, still
console.log(obj[a]);   // 2, because the var a == 'b' as if:
console.log(obj['b']); // 2