我正在学习JavaScript,我遇到了一些数组函数的问题,特别是forEach方法。
'use strict';
var business = [
{
name: 'Red Apple',
distance: 2,
price: 3,
rating: 1
},
{
name: 'Zoe',
distance: 1,
price: 1,
rating: 5
},
{
name: 'Everything Pizza',
distance: 6,
price: 1,
rating: 2
},
{
name: 'Salad Place',
distance: 2,
price: 2,
rating: 4
},
{
name: 'Yumm',
distance: 5,
price: 2,
rating: 3
},
{
name: 'California Foods',
distance: 8,
price: 5,
rating: 4
}
];
business.updateLocation = function (miles) {
function updateDistance(value){
value.distance += miles;
}
return this.forEach(updateDistance);
};
代码的顶部是我正在创建的简单业务审核前端的对象数组。我在其他函数中调用了其他数组方法并执行了它们的表,这些是过滤器和排序方法。我的目标是简单地将变量里程添加到对象的distance属性,然后使用以下代码以表格形式打印它们:
// Test the updateLocation method.
console.log('Return value from updateLocation')
console.table(business.updateLocation(3));
每当我调用console.table(business.updateLocation(3))时,都不会打印。我确定它与我的功能有关,因为我仍然对每个参与的三个参数感到困惑。有人可以详细说明在此上下文中使用的值,索引和数组吗?我只需要价值......对吗?提前致谢!
答案 0 :(得分:3)
Array.forEach
始终返回undefined。
forEach()为每个数组元素执行一次回调函数;与every()和some()不同,它总是返回undefined值。
'use strict';
var business = [
{
name: 'Red Apple',
distance: 2,
price: 3,
rating: 1
},
{
name: 'Zoe',
distance: 1,
price: 1,
rating: 5
},
{
name: 'Everything Pizza',
distance: 6,
price: 1,
rating: 2
},
{
name: 'Salad Place',
distance: 2,
price: 2,
rating: 4
},
{
name: 'Yumm',
distance: 5,
price: 2,
rating: 3
},
{
name: 'California Foods',
distance: 8,
price: 5,
rating: 4
}
];
business.updateLocation = function (miles) {
function updateDistance(value){
value.distance += miles;
}
this.forEach(updateDistance);
return this;
};
console.log(business.updateLocation(3));
答案 1 :(得分:1)
Array.foreach()
函数仅对给定数组实例中的每个元素进行操作,而不是返回新的数组实例。这是Array.forEach()
的{{3}}。正如您在文档中看到的那样,该函数将在数组中的每个元素上运行一个回调函数,并将一个可选对象设置为回调函数中可用的this
对象。因此,您可以使用Array.foreach()
函数编写代码行,如下所示:
this.forEach(updateDistance);
顺便说一下,Array.map()
函数是你最初想要在你的问题中做的。这是Array.map()
函数的documentation。正如您在文档中看到的,此函数采用与Array.forEach()
函数相同的参数,并且还对数组中的每个元素运行回调函数,但回调函数需要返回一些内容,每个返回对象都是插入从函数返回的新数组实例。
答案 2 :(得分:-1)
对于java脚本中的每个循环,使用以下语法(迭代器名称,数据源)
因此,在您的情况下,要遍历业务中的每个项目,您将使用代码
for each (var item in business)
请告诉我这是否解决了您的问题:)