在这段代码中,我试图使用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
},
答案 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