- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在一系列数组操作方法中,我想更改数组中每个项目的属性。
每种可用的方法在这样使用时都会出现问题:
Array是否有一个方法可以操作数组中的每个项目,并返回数组?
我已经求助于使用 map
或 filter
,但这感觉像是一种没有必要的解决方法。
一个人为的例子:
var items = [
{ name: 'Smith' },
{ name: 'Jones' },
{ name: 'Simpson' }
];
过滤器:
return items.filter(function(item) {
item.fullname = 'Professor ' + item.name;
return true;
});
map :
return items.map(function(item) {
item.fullname = 'Professor ' + item.name;
return item;
});
对于每个:
items.forEach(function(item) {
item.fullname = 'Professor ' + item.name;
});
return items;
??:
return items.someMethod(function(item) {
item.fullname = 'Professor ' + item.name;
});
最佳答案
不,没有这样的方法。不过,常见的辅助库( Underscore 、 jQuery 、 Prototype 、...)确实有返回数组的 each
迭代方法。
forEach
方法不会返回原始数组,因为它不是为了函数链接而创建的,而是为了执行副作用。
map
方法是这里选择的工具。它来自函数式编程,其目的是创建一个由转换后的对象组成的新数组,该数组自然会从函数中返回。通过改变你的对象而不是创建新的对象,你忽略了这个范例,但是当你返回
(变异的)对象时你仍然可以使用它。
关于javascript - JavaScript 数组是否有类似于 forEach 的可链接方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24390368/
我是一名优秀的程序员,十分优秀!