是否已经有一些javascript函数在浏览器中的客户端执行与cakephp函数Set::合并和Set::classicExtract相同的操作?http://book.cakephp.org/2.0/en/core-utility-libraries/set.html
这样我就可以把这个数组:
a = [
{
'User' : {
'id' : 2,
'group_id' : 1,
'name' : 'Alfred'
}
},
{
'User' : {
'id' : 12,
'group_id' : 2,
'name' : 'Albert'
}
}
]
功能类似于
Set::combine(a, '{n}.User.id', '{n}.User.name')
转换为
a = {
2 : 'Alfred',
12 : 'Albert'
}
例如cakephp。但这不仅仅是这个简单的例子,我真的在寻找一个库或类似的东西,可以做它在一个类似的方式cakephp。谢谢提前很多!
3条答案
按热度按时间mhd8tkvw1#
没有。Javascript没有类似的内置功能。
您可以自己创建这些函数,也可以使用Underscore.js之类的库,它提供了许多类似的实用程序。
k4emjkb12#
我***很想***看到一个相当于CakePHP的Hash类的JS,但遗憾的是,在谷歌上搜索了一个小时后,我什么也找不到... Underscore.js和Sugar.js都有一些过滤函数,但似乎都不能处理多维数组。
在Cake里我经常做这样的事情......
如果有人知道一个JS库可以做到这一点,将非常感谢这个提示。
编辑:我已经找到了一些选项,它们允许对JSON数据进行这种查询(并提供了它们使用的语法示例)。
automobiles[?maker == 'Honda' && year > 2009].model
.automobiles{.maker === "Honda" && .year > 2009}.model
个.automobiles .maker:val("Honda") .model
$.automobiles[?(@.maker='Honda')].model
JMESPath是我的首选。
ippsafx73#
这在纯JavaScript中相当容易:
我知道这只是一个简单的例子,但重点是javascript支持回调和一级函数,根本不需要像“{n}.User.name”这样的魔术。