如何在javascript中使用for循环附加对象值?

如何在javascript中使用for循环附加对象值?,javascript,arrays,loops,Javascript,Arrays,Loops,我循环遍历一个名为accData的数组,并创建一个名为WL和RF的新数组。我想使它易于维护,但我有一个问题。当我想将WL阵列数据更改为CH2,将RF阵列数据更改为DIG2时,我必须手动键入脚本。 这是我的剧本 const accData = [ { st: 'serijabo', path: 'serijabo.json', wl: 'CH1', rf: 'DIG1' }, { st: 'sukabumi', path: 'sukabumi.json', wl: 'CH2', r

我循环遍历一个名为accData的数组,并创建一个名为WL和RF的新数组。我想使它易于维护,但我有一个问题。当我想将WL阵列数据更改为CH2,将RF阵列数据更改为DIG2时,我必须手动键入脚本。 这是我的剧本

const accData = [
    { st: 'serijabo', path: 'serijabo.json', wl: 'CH1', rf: 'DIG1' },
    { st: 'sukabumi', path: 'sukabumi.json', wl: 'CH2', rf: 'DIG2' },
];

for (let i = 0; i < accData.length; i++) {
  const xhr = new XMLHttpRequest();
  xhr.onreadystatechange = function () {
  if (xhr.readyState === 4) {
    const data = JSON.parse(xhr.responseText);

    let WL = [];
    let RF = [];
    for (let i = 0; i < data.length; i++) {
      WL.push(Number(data[i].CH1)); // this line
      RF.push(Number(data[i].DIG1)); // and this line
    }
  }
 }
}

如何解决这个问题?

您是否尝试过使用括号而不是圆点?它们应该允许您通过字符串访问属性

WL.push(Number(data[i].`${accData[i].wl}`)); //not working
RF.push(Number(data[i].`${accData[i].rf}`)); //not working
WL.push(Number(data[i][`${accData[i].wl}`]));
RF.push(Number(data[i][`${accData[i].rf}`]));

另外,
i
在回调中被重新定义。更不用说整个字符串表达式是完全不必要的。只需执行
data[i][accData[i].rf]
data[i][accData[i].wl]返回错误“uncaughttypeerror:cannotreadproperty'wl'ofundefined”,而
data[i].CH1
工作正常如果您得到该错误,则表示对象
accData[i]
暂时不存在,您无法访问其
wl
属性。您可以编写
accData[i]&&WL.push(Number(data[i][`${accData[i].WL}`])因此,代码仅在
accData[i]
存在时运行。而
(data[i]['{accData[i].wl}]
为每个元素返回NaN是否确实需要
Number()
?可能是重复的,因为json返回字符串,我想处理数字,因此,我将它转换为@Vilx replicate of以及关于同一事物的数百个其他问题。您使用
i
两次。。。。这是你的主要问题