Javascript 我试图从一个对象数组中检索一个数字数组

Javascript 我试图从一个对象数组中检索一个数字数组,javascript,arrays,object,ecmascript-6,Javascript,Arrays,Object,Ecmascript 6,当我运行generateData()函数时,它返回一个NaN数组 function generateData(name) { var arr = []; var t; const x = name; for (i = 0; i < data.data.length; i++) { t = Number(data.data[i].x) arr.push(t); } return arr; } 我需要一个包含不同

当我运行generateData()函数时,它返回一个NaN数组

function generateData(name) {
    var arr = [];
    var t;
    const x = name;
    for (i = 0; i < data.data.length; i++) {
        t = Number(data.data[i].x)
        arr.push(t);
    }
    return arr;
}
我需要一个包含不同列(如RightA、CenterA等)的所有条目的阵列。
我在代码中使用Number()函数将条目转换为数字,但它仍然不起作用

使用计算属性名称:

t = Number(data.data[i][x])
在本例中,
data.data[i].x
正在尝试访问
data.data[i]
的名为
x
的属性,该属性相当于
data.data[i]['x']

您希望访问变量
x
的值的属性,因此需要使用括号表示法访问计算的属性名称:

t = Number(data.data[i][x])

否则该值将是未定义的,除非
data.data[i]
具有属性
x
,该属性仍然会导致不期望的结果。

因为x是字符串,所以假设x=“LeftA”不能将字符串键用作obj。“LeftA”。你应该写成obj[“LeftA”]即obj[x]。在你的例子data.data[i][x]中,为什么这是对我的回答@DanilaAlpatov的评论?谢谢!但是我在使用这个函数时遇到了另一个问题。我想我把变量的范围搞乱了。我已将数据声明为全局变量。现在,当我尝试将此函数用作我的对象属性之一时,我得到了一个错误-Uncaught TypeError:无法读取script.js:66处generateData(script.js:25)的undefined属性“data”,你能帮我一下吗?@KartikTyagi这意味着
数据
未定义,可能抛出这里:
数据.data
。这意味着
数据
之前的
数据
未定义。检查
数据
的声明位置以及是否可访问。
var数据我已经全局定义了“数据”,它是原始问题中对象的原始数组。在那之后,当我定义我的函数并尝试在下面的代码中使用它时,我得到了我在前面的评论中提到的错误消息
myChart=new Chart(ctx,{type:'line',数据:{dataset:[{backgroundColor:transparentize(220,20,60),数据:generateData('CenterA'),}]})
@KartikTyagi
数据
可能在某个地方被覆盖,请尝试在回调之前使用
console.log(JSON.parse(JSON.stringify(data)),查看它是否在那里可用
t = Number(data.data[i].x)
t = Number(data.data[i][x])