在Javascript数组的中途未定义属性
Property undefined halfway through Javascript array
我试图比较两个数组中的每个对象,以便找到匹配项。目前,我只比较一处房产,但计划在我能让这部分工作时比较两处房产。
我觉得奇怪的是,它适用于数组中的前三项,而在第四项返回错误。以下是Chrome中的控制台输出:
Washington
Smith
yes
Jones
Uncaught TypeError: Cannot read property 'name' of undefined
这是我的javascript:
var self = this;
self.people = [
{ id: '1', name: 'Washington' },
{ id: '2', name: 'Smith' },
{ id: '1', name: 'Jones' },
{ id: '1', name: 'Smith' },
{ id: '3', name: 'Washington' }
];
self.params = [
{id: '1', name: 'Jones'},
{id: '2', name: 'Smith'}];
for (var value in self.params) {
for (var value in self.people) {
console.log(self.people[value].name);
if (self.people[value].name == self.params[value].name) {
console.log('yes');
}
}
}
如果我删除If语句,代码运行时不会出错,并按预期两次打印people数组中的"名称"。想法?提前感谢!
您使用的是变量名"value"的两倍。
顺便说一句,在Javascript中,变量的作用域不在块级别(您在2 for中的2个var声明(,但它们要么是全局作用域,要么是函数作用域。
我不确定你到底想实现什么,但也许下一行可以给你一个提示:
var val,
value;
for (val in self.params) {
for (value in self.people) {
console.log(self.people[value].name);
if (self.people[value].name == self.params[val].name) {
console.log('yes');
}
}
}
for (var value in self.params) {
for (var value1 in self.people) {
console.log(self.people[value1].name);
if (self.people[value1].name == self.params[value].name) {
console.log('yes');
}
}
}
两个循环都使用相同的变量。。。
相关文章:
- 将对象作为参数传递后的未定义属性
- 检查链接对象形式中未定义属性的最佳实践是什么
- PhantomJS中的evalute内部未定义属性
- 访问数字类型的未定义属性
- 如何处理未定义属性的未定义属性 javascript 类型错误
- 返回未定义属性的脚本
- 类型错误:无法读取 ng-repeat 的未定义属性
- JavaScript-Disqus如何处理其“;disqus_config”;包含未定义属性的函数
- 是对HTMLElement#样式的未定义属性的赋值的返回值,保证与赋值相同
- 最好检查未定义属性或设置为空
- 如何解决这个未定义属性的node.js错误?
- 如何在JavaScript中挽救对象的未定义属性?
- AngularJS和PHP -注意:未定义属性:stdClass
- 主干模型删除未定义属性
- if else子句中未定义对象的未定义属性
- Javascript数组问题:无法读取未定义属性
- 当尝试使用未定义属性进行筛选时,Lodash将排除项
- 在Javascript数组的中途未定义属性
- Knockout arrayForEach未定义属性
- javascript中未定义属性的简写,初始化和赋值属性