考虑以下代码:
let reduced = inventors.reduce((a, b) => {
return (b.passed - b.year) + a;
}, 0);
我不明白这个额外的0意味着什么。起初,我认为这类似于设置默认值,如下所示:
let reduced = inventors.reduce((a = 0, b) => {
return (b.passed - b.year) + a;
});
但是没有用。区别在于,与第一个代码数组成功地减少了。秒返回了一些奇怪的连接字符串。
PS这是我要减少的数组(获取列表中所有发明者的寿命之和):
const inventors = [
{ first: 'Albert', last: 'Einstein', year: 1879, passed: 1955 },
{ first: 'Isaac', last: 'Newton', year: 1643, passed: 1727 },
{ first: 'Galileo', last: 'Galilei', year: 1564, passed: 1642 },
{ first: 'Marie', last: 'Curie', year: 1867, passed: 1934 },
{ first: 'Johannes', last: 'Kepler', year: 1571, passed: 1630 },
{ first: 'Nicolaus', last: 'Copernicus', year: 1473, passed: 1543 },
{ first: 'Max', last: 'Planck', year: 1858, passed: 1947 },
{ first: 'Katherine', last: 'Blodgett', year: 1898, passed: 1979 },
{ first: 'Ada', last: 'Lovelace', year: 1815, passed: 1852 },
{ first: 'Sarah E.', last: 'Goode', year: 1855, passed: 1905 },
{ first: 'Lise', last: 'Meitner', year: 1878, passed: 1968 },
{ first: 'Hanna', last: 'Hammarström', year: 1829, passed: 1909 }
];
那么,有人可以告诉我这个0做什么吗?
答案 0 :(得分:1)
SELECT
?property
?propertyLabel
?qval
(GROUP_CONCAT(DISTINCT ?val_Label; separator="; ") AS ?val_Label) WHERE {
?property a wikibase:Property; wikibase:claim ?p; wikibase:statementProperty ?ps; wikibase:qualifier ?pq.
?property rdfs:label ?propertyLabel . FILTER (LANG(?propertyLabel) = 'en' )
?company ?p ?statement . ?statement wikibase:rank ?rank .
FILTER (?rank IN (wikibase:NormalRank, wikibase:PreferredRank))
?statement ?ps ?value . # URI, literal or blank node
OPTIONAL {?value rdfs:label ?valueLabel . FILTER (LANG(?valueLabel) = 'en')}
BIND (COALESCE(?valueLabel, ?value) AS ?val_Label)
OPTIONAL { ?statement ?pq ?qval }
} GROUP BY ?property ?propertyLabel ?qval
VALUES (?company) {(wd:Q95)}
这被视为初始值
如果不使用数组的第一个元素,则视为初始值
答案 1 :(得分:0)
arr.reduce(callback[, initialValue])
initialValue可选
用作回调的第一次调用的第一个参数的值。如果未提供初始值,则将使用数组中的第一个元素。在没有初始值的空数组上调用reduce()是错误的。
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/Reduce
答案 2 :(得分:-1)
在这种情况下,0代表累加器。 您可以在Google上搜索并找到MDN的详细说明。
reduce的基本用途是将一个函数作为第一个参数,将累加器作为第二个参数,并将两个值组合在一起以产生新值。
如果不传递累加器,则将数组内的第一个元素设置为默认元素。