为什么不';javascript对象是否有映射/减少/过滤?

为什么不';javascript对象是否有映射/减少/过滤?,javascript,functional-programming,ecmascript-6,Javascript,Functional Programming,Ecmascript 6,假设我有一个对象: const millionsOfLines = { windowsVista: 50, firefox: 9, google: 2000, quake3Engine: 0.3, mySQL: 12 }; 以同样的方式处理数组,如果我可以: const lessThan10 = millionsOfLines.filter((value, key)=> value < 10); const lessThan10=milli

假设我有一个对象:

const millionsOfLines = {
    windowsVista: 50,
    firefox: 9,
    google: 2000,
    quake3Engine: 0.3,
    mySQL: 12
};
以同样的方式处理数组,如果我可以:

const lessThan10 = millionsOfLines.filter((value, key)=> value < 10);
const lessThan10=millionsOfLines.filter((值,键)=>value<10);
相反,我必须做:

const lessThan10 = {};
Object.keys(millionsOfLines).forEach(key=>{
    if (millionsOfLines[key] < 10) {
        lessThan10[key] = value;
    }
});
const lessThan10 = Object.keys(millionsOfLines)
    .filter(key=> millionsOfLines[key] < 10)
    .map(key=> millionsOfLines[key]);
const lessThan10={};
Object.key(百万条线).forEach(key=>{
if(百万线[键]<10){
lessThan10[键]=值;
}
});

回答实际问题:

它们只是没有被提出、定义、检查以确保它们不会与其他事物发生冲突,等等。你可以自由地在网上提出一些东西。我认为,正如我们所看到的,随着人们逐步严格定义语义,我们肯定会看到更多此类实用程序。(我想我们会把它们看作是
对象
反射
上的附加方法,而不是
对象的附加方法。prototype
。在这个阶段向
对象添加东西。prototype
很难保证“web安全”。)


旁注:

相反,我必须做:

const lessThan10 = {};
Object.keys(millionsOfLines).forEach(key=>{
    if (millionsOfLines[key] < 10) {
        lessThan10[key] = value;
    }
});
const lessThan10 = Object.keys(millionsOfLines)
    .filter(key=> millionsOfLines[key] < 10)
    .map(key=> millionsOfLines[key]);
const lessThan10=Object.key(百万条线)
.filter(key=>millionsOfLines[key]<10)
.map(key=>millionsOfLines[key]);
嗯,我假设您想要过滤对象属性:

const millionsoffline={
windowsVista:50,
firefox:9,
谷歌:2000,
地震3发动机:0.3,
mySQL:12
};
const lessThan10=对象.键(百万条线).reduce((obj,k)=>{
设v=百万线[k];
如果(v<10){
obj[k]=v;
}
返回obj;
}, {});

控制台日志(小于10)我无法告诉您为什么对象没有这些函数。这可能是因为它们是对象而不是哈希表,并且最初并不打算像映射那样使用。在ES6中,您可以改为使用,但并非所有主流浏览器都支持这种类型


此外,如果您正在寻找这些函数,请查看一个广泛使用的库,其中实现了高阶函数。此库的函数支持对数组和对象进行映射、减少、筛选、展平和许多其他操作。

因此这是留给读者的一个练习。
您至少需要指定您的问题:)问题是什么?
筛选对集合进行迭代并返回子集。对象不能被迭代。一个对象不能有一个子集,只能有新的、更小的对象。在一个对象上应用数组方法怎么样ES7@DavidHedlund嗯…当然,一个对象当前不能被迭代。问题是-为什么不呢?好的
reduce
。对不起,我意识到我的代码实际上是错的,并在你发布之前纠正了它this@eye_mew:啊,是的,那代码比我想象的要多。Rethe <代码>减少:我曾经考虑过上面的一个滥用,因为“累加器”值从不改变,而且写回调时很容易忘记返回它。也许我仍然认为这是一种虐待,但我相当肯定我会在少数人,所以……-)