在数组上调用 forEach 时出错
Error calling forEach on array
我在另一个 forEach 函数中遇到了一个问题:
results
变量包含如下对象:
{
names: [
'Someone',
'Someone else'
],
emails: [
'someone@someemail.com'
'something@somemail.com'
]
}
我希望它展开所有数组并生成如下数组:
[
{term: 'Someone', type: 'names'},
...
]
这是我的代码:
var keys = _.keys(results);
console.log(keys);
var finalResult = [];
keys.forEach( function (key) {
var arrTerms = results[key];
console.log(key, arrTerms); //arrTerms prints fine
arrTerms.forEach(function (term) { //This line throws an exception
finalResult.push({
term: term,
type: key
});
});
});
对 forEach 的嵌套调用抛出以下异常:
TypeError: Uncaught error: Cannot call method 'forEach' of undefined
我尝试使用 for 循环迭代直到长度,但它产生了另一个异常:
TypeError: Uncaught error: Cannot read property 'length' of undefined
我认为这里的问题是您可能会将 undefined 分配给您的 arrTerms(当 results[key] returns undefined 导致您使用的密钥不包含在您的对象中)。尝试这样做:
var keys = _.keys(results);
console.log(keys);
var finalResult = [];
keys.forEach( function (key) {
if(results[key] != undefined){
var arrTerms = results[key];
arrTerms.forEach(function (term) { //This line throws an exception
console.log(key, arrTerms); //arrTerms prints fine
finalResult.push({
term: term,
type: key
});
});
}
});
我在另一个 forEach 函数中遇到了一个问题:
results
变量包含如下对象:
{
names: [
'Someone',
'Someone else'
],
emails: [
'someone@someemail.com'
'something@somemail.com'
]
}
我希望它展开所有数组并生成如下数组:
[
{term: 'Someone', type: 'names'},
...
]
这是我的代码:
var keys = _.keys(results);
console.log(keys);
var finalResult = [];
keys.forEach( function (key) {
var arrTerms = results[key];
console.log(key, arrTerms); //arrTerms prints fine
arrTerms.forEach(function (term) { //This line throws an exception
finalResult.push({
term: term,
type: key
});
});
});
对 forEach 的嵌套调用抛出以下异常:
TypeError: Uncaught error: Cannot call method 'forEach' of undefined
我尝试使用 for 循环迭代直到长度,但它产生了另一个异常:
TypeError: Uncaught error: Cannot read property 'length' of undefined
我认为这里的问题是您可能会将 undefined 分配给您的 arrTerms(当 results[key] returns undefined 导致您使用的密钥不包含在您的对象中)。尝试这样做:
var keys = _.keys(results);
console.log(keys);
var finalResult = [];
keys.forEach( function (key) {
if(results[key] != undefined){
var arrTerms = results[key];
arrTerms.forEach(function (term) { //This line throws an exception
console.log(key, arrTerms); //arrTerms prints fine
finalResult.push({
term: term,
type: key
});
});
}
});