reduce
函数. 其中 Python 中 reduce
作为全局函数出现, 而 Javascript 中则是 Array
的成员函数. 大量的用 reduce
来做累加累乘之类的例子就不说了, 这里探讨一个特殊的用例.前端经常会需要将页面中用户填写的一些内容打包成 JSON 字典, 比如一个注册页面片段
<div>
<input id='email' placeholder='Email'>
<input id='password' placeholder='Password'>
<input id='conform_password' placeholder='Confirm Password'>
<input id='address' placeholder='Address'>
<input id='phonenum' placeholder='Phone Number'>
<button id='subm'>Submit</button>
</div>
<script>
document.getElementById('subm').onclick = function() {
var inputValues = {
email: document.getElementById('email').value,
password: document.getElementById('password').value,
address: document.getElementById('address').value,
phonenum: document.getElementById('phonenum').value
};
/* process inputValues */
};
</script>
inputValues
时就会多一项, 代码维护会很烦.如果能这样写的话可能会好一些
var inputValues = {k: document.getElementById(k).value
for k in ['email', 'password', 'address', 'phonenum']};
reduce
替代品 (终于正题了)var inputValues = ['email', 'password', 'address', 'phonenum'].reduce(
function(obj, item) {
obj[item] = document.getElementById(item).value;
return obj;
}, {}));