首页 > 解决方案 > 我的“for”循环没有在 JavaScript 中运行(使用 Node.js 运行 JavaScript 文件)

问题描述

考虑:

let data = [{
    a: 93,
    b: 23,
    c: 56
  },
  {
    a: 96,
    b: 14,
    c: 45
  },
  {
    a: 83,
    b: 5,
    c: 65
  },
  {
    a: 99,
    b: 16,
    c: 47
  },
  {
    a: 78,
    b: 31,
    c: 59
  },
]

let isdata = {
  a: 50,
  b: 34,
  c: 32
}

let prop_names = Object.keys(data[1])
console.log(prop_names)
let answers = []

for (let q = 0; q > prop_names.length; q++) {
  console.log(answers)
  for (let i = 0; i > data.length; i++) {
    answers[q] += data[i].propnames[q]
  }
}

for (let x = 0; x > answers.length; x++) {
  answers[x] /= data.length
}

console.log(answers)

正如您从代码片段中可以看到的那样,当我在for循环内进行 console.log 回答时,它不会运行,但在for循环外它会运行。这段代码应该循环遍历每个对象的每个属性并对值进行平均。

标签: javascriptnode.js

解决方案


您共享的代码的问题:

  1. 循环条件不正确。你已经使用>了,它应该是<

  2. 您尚未初始化answers数组,但您正在使用+=添加current valuewith previous value

  3. 您访问data数组不正确。正确的语法是data[i][props_names[q]]. 查看括号符号以访问对象属性

一个可行的解决方案如下:

var data = [{
    a: 93,
    b: 23,
    c: 56
  },
  {
    a: 96,
    b: 14,
    c: 45
  },
  {
    a: 83,
    b: 5,
    c: 65
  },
  {
    a: 99,
    b: 16,
    c: 47
  },
  {
    a: 78,
    b: 31,
    c: 59
  },
]

var isdata = {
  a: 50,
  b: 34,
  c: 32
}

var prop_names = Object.keys(data[1])
console.log(prop_names)
var answers = Array.from(prop_names, () => 0);

for (var q = 0; q < prop_names.length; q++) {

  for (var i = 0; i < data.length; i++) {
    answers[q] += data[i][prop_names[q]]
  }
}

for (var x = 0; x < answers.length; x++) {
  answers[x] /= data.length
}

console.log(answers)


推荐阅读