ramda.js中是否有类似于lodash _.toArray的函数?

5
我想停止使用 lodash.js 并转向使用 ramda.js,但我没有看到像对象的 _.toArray() 这样的函数,在 ramda 中是否有类似的函数需要我组合?或者应该继续使用 lodash 进行这些功能(以及可能还有我尚未遇到的其他情况)。
例如,如果您在 lodash 中有一个对象,如下所示: {"key1": {"inner": "val"}, "key2" : {"inner": "val"}} 您可以使用以下函数将其转换为数组: [{"inner": "val"}, {"inner": "val"}] 使用函数 _.toArray()

1
_.toArray() for objects - 嗯,你能给个例子吗? - thefourtheye
如果我没记错的话,_.toArray不能用于普通对象上,只能用在类数组对象(如NodeList、ArgumentList等)上。 - Evan Davis
1
@simplesthing 不是的。它只会返回值,就像这样 [ { inner: 'val' }, { inner: 'val' } ],你可以使用 values 来实现。 - thefourtheye
@thefourtheye 你说得对,我可以编辑这个例子,但问题仍然存在,有没有使用 Ramda 的组合或函数可以使用? - simplesthing
抱歉,我没有看到值的响应,谢谢@thefourtheye。如果您将您的评论转移到答案中,我可以将其标记为正确的。 - simplesthing
如果我没记错的话,_.toArray 主要是为了将参数对象转换成真正的数组,以便您可以将它们作为参数传递给 apply。我不认为它是为上述目的而设计的,它可能只是巧合地起作用。 - Jed Schneider
2个回答

10

嗯,Ramda有values函数,似乎正是你所需要的:

var obj = {"key1": {"inner": "val"}, "key2" : {"inner": "val"}};
R.values(obj); //=> [{"inner": "val"}, {"inner": "val"}]

不过从lodash文档中并不清楚_.toArray函数接受哪些类型的值,因此它可能无法完全替代。


1
我想OP需要的是R.values或者R.toPairs - davidchambers

2

mb vanilla.js是否能帮助你?(浏览器支持IE9+和所有其他浏览器)

var obj = {"key1": {"inner": "val"}, "key2" : {"inner": "val"}};
    
    
var array = Object.keys(obj || {}).map(function(key){
   return obj[key];
});
    
document.write(JSON.stringify(array, null, 4));


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接