假设我有这个对象:
const millionsOfLines = {
windowsVista: 50,
firefox: 9,
google: 2000,
quake3Engine: 0.3,
mySQL: 12
};
就像我可以做的那样,我会为数组做同样的事情:
const lessThan10 = millionsOfLines.filter((value, key)=> value < 10);
相反,我必须这样做:
const lessThan10 = {};
Object.keys(millionsOfLines).forEach(key=>{
if (millionsOfLines[key] < 10) {
lessThan10[key] = value;
}
});
多么麻烦。其他功能肯定也可以与数组版本完全相同:
const thousandsOfLines = millionsOfLines.map((value, key)=> value * 1000);
const totalLines = millionsOfLines.reduce((total, currValue, currKey)=> total + currValue);
我计划将其与我实际需要输入的内容进行比较,但我无法忍受这种痛苦,所以这是留给读者的练习。
那么 - 为什么javascript对象没有map / reduce / filter?
答案 0 :(得分:5)
回答实际问题:
他们尚未被提议,定义,检查以确保他们不会与其他事物发生冲突等等。您可以自由地在{{3}上提出建议。 }。我认为我们肯定会看到更多这类实用程序,因为人们正在严格定义语义,正如我们已经看到TC-39 github page一样。 (我认为我们会在SIGSEGV
和Object
上将其视为其他方法,但不是Reflect
的补充。在此阶段向Object.prototype
添加内容是真的,真的很难保持网络安全。&#34;)
旁注:
相反,我必须这样做:
Object.prototype
嗯,我以为你想过滤对象属性:
const lessThan10 = Object.keys(millionsOfLines)
.filter(key=> millionsOfLines[key] < 10)
.map(key=> millionsOfLines[key]);
&#13;
只需要一次通过,而不是两次。
答案 1 :(得分:1)