在foreach循环中使用索引作为javascript中的变量

时间:2018-05-16 20:53:06

标签: javascript arrays

在这段代码中,我试图使用forEach循环的索引作为访问数组索引的方法。当我使用数字而不是索引时,它可以工作。任何见解?

   let postive = this.graphData.results[0].values
   let finalPostive = []

   // format array
   postive.forEach(function (item, index) {
        self.makeArray(finalPostive, item, index)
   })

   // make array function
   makeArray: function (newArray, item, index) {

       // Putting in a number WORKS
       obj["name"] = this.graphData.results[0].id

       // Using the index returns 
       // "TypeError: Cannot read property 'id' of undefined"
       obj["name"] = this.graphData.results[index].id

    },

4 个答案:

答案 0 :(得分:2)

forEach this.graphData.results[0].values,但您正在选择this.graphData.results[index]。这与results[0].values中存在的相同数量的索引不匹配。

试试这个:

obj["name"] = this.graphData.results[0].values[index].id

答案 1 :(得分:0)

感谢您的帮助。我的问题很糟糕,这与Vue有关。这对我有用

 postive.forEach(function (item, index) {
    self.makeArray(finalPostive, 'pos', item, index)
 })

 // make array function
 makeArray: function (newArray, flag, item, index) {

if (flag === 'pos') {
    obj["name"] = this.graphData.results[0].id
  } 
  else {
    obj["name"] = this.graphData.results[1].id
  }

},

答案 2 :(得分:-1)

您在访问索引方面所做的工作是正确的。这是另一个确认的例子:

'use strict';
//  this module connects to the Google geocode api and returns the formatted address and latitude/longitude for an address passed to it

const request = require('request'),
    req_prom  = require('request-promise');

const config  = require('../data/config.json');

const geocode_loc = 'Seattle, WA';
const geocode_key = config.GEOCODE_KEY;

const options = {
    url: `https://maps.google.com/maps/api/geocode/json?address=${geocode_loc}&key=${geocode_key}`,
    json: true
};

let body = {};

let geocode = request(options, (err, res, body) => {
    if (!err && res.statusCode === 200) {
        body = {
            loc: body.results[0].formatted_address,
            lat: body.results[0].geometry.location.lat,
            lng: body.results[0].geometry.location.lng
        };
        return body;
    }
});


module.exports.geocode = geocode;

您能否提供有关您所看到的错误的更多信息?

答案 3 :(得分:-1)

Javascript的索引内置为[i]。此外,函数中的参数应该是i而不是index。

而不是 obj [“name”] = this.graphData.results [0] .values [index] .id

尝试 obj [“name”] = this.graphData.results [0] .values [i] .id