JavaScript For循环未捕获的TypeError

时间:2018-08-11 15:48:13

标签: javascript google-sheets

我创建了一个用于使用Google表格工作的电子表格。它运作良好,但是我想通过学习JavaScript来增强它,因此我编写了一个简单的复制粘贴功能,效果确实很好。

为了使将来更容易更改值,我正在尝试将所有内容添加到数组中并创建一个for循环。我以前从未做过,因此,如果它看起来很糟糕,请原谅我,但这是我创建的数组:

var rangesAndValues = {
  "0" : {
    range : "C3",
    value : ""
  },
  "1" : {
    range : "C5:C7",
    value : 0
  },
  "2" : {
    range : "C9",
    value : 0
  },
  "3" : {
    range : "G3:G10",
    value : 0
  },
  "4" : {
    range : "J3",
    value : "No"
  },
  "5" : {
    range : "J5",
    value : "No"
  },
  "6" : {
    range : "J7",
    value : 0
  },
  "7" : {
    range : "J9",
    value : 0
  },
  "8" : {
    range : "M3:M10",
    value : 0
  },
  "9" : {
    range : "O3:O10",
    value : 0
  },
  "10" : {
    range : "Q3:Q10",
    value : ""
  },
  "11" : {
    range : "S3:S10",
    value : 0
  }
};

然后我尝试将其循环并进行console.log记录以确保其正常工作。

rangesAndValues.forEach(function(element){
    console.log(element);
});

我在控制台中收到此错误:

Uncaught TypeError: rangesAndValues.forEach is not a function at window.onload

最终,我希望它为0-11循环一个函数,为1-11循环另一个(跳过0)。

我也不知道如何在工作时跳过第一个,所以如果您也回答的话,布朗尼也很重要。谢谢!

3 个答案:

答案 0 :(得分:0)

forEach是Array原型上的一种方法,但是那里有一个Object。您可以获取对象的键,进行遍历,然后按键获取值,如下所示:

var keys = Object.keys(rangesAndValues)

keys.forEach(function(key){
    var element = rangeAndValues[key];
    console.log(element);
});

答案 1 :(得分:0)

您需要for..in才能遍历对象

var rangesAndValues = {
  "0": {
    range: "C3",
    value: ""
  },
  "1": {
    range: "C5:C7",
    value: 0
  },
  "2": {
    range: "C9",
    value: 0
  },
  "3": {
    range: "G3:G10",
    value: 0
  },
  "4": {
    range: "J3",
    value: "No"
  },
  "5": {
    range: "J5",
    value: "No"
  },
  "6": {
    range: "J7",
    value: 0
  },
  "7": {
    range: "J9",
    value: 0
  },
  "8": {
    range: "M3:M10",
    value: 0
  },
  "9": {
    range: "O3:O10",
    value: 0
  },
  "10": {
    range: "Q3:Q10",
    value: ""
  },
  "11": {
    range: "S3:S10",
    value: 0
  }
};


for (let keys in rangesAndValues) {
  console.log(rangesAndValues[keys])

}

答案 2 :(得分:0)

您正在尝试在对象上使用数组方法forEach

可以遍历对象值

Object.values(rangesAndValues).forEach(function(element){
    console.log(element);
});

Object.values为您提供一个数组,然后您可以使用forEach