Javascript 我试图从一个对象数组中检索一个数字数组
当我运行generateData()函数时,它返回一个NaN数组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; } 我需要一个包含不同
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])