Javascript中的Set::combine等cakephp函数
是否已经有一些javascript函数与浏览器客户端上的cakephp函数Set::combine和Set::classicExtract执行相同的操作? 这样我就可以带上这个阵列:Javascript中的Set::combine等cakephp函数,javascript,cakephp,set,Javascript,Cakephp,Set,是否已经有一些javascript函数与浏览器客户端上的cakephp函数Set::combine和Set::classicExtract执行相同的操作? 这样我就可以带上这个阵列: a = [ { 'User' : { 'id' : 2, 'group_id' : 1, 'name' : 'Alfred' } }, { 'User' : {
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的东西。
提前多谢 没有。Javascript没有类似的内置功能
您可以自己创建这些函数,也可以使用一个库,例如提供了许多类似这样的实用程序的库。这在纯javascript中相当容易:
result = {}
a.forEach(function(item) {
result[item.User.id] = item.User.name;
})
我意识到这只是一个简单的例子,但关键是javascript支持回调和一级函数,而且根本不需要像“{n}.User.name”这样的魔法。。。。Underline.js和Sugar.js都有一些过滤功能,但它们似乎都不适用于多维数组
在蛋糕里我经常做这样的事情
Hash::extract($users, '{n}.User.Posts.{n}.Comments.{n}[published=1]');
如果有人知道一个JS库可以做到这一点,我将非常感谢这个提示
EDIT:我找到了一些允许这种JSON数据查询的选项(以及它们使用的语法示例)
- (可能是最成熟的选择)
汽车[?制造商='本田'&&year>2009]。车型
-
.automobiles{.maker==“Honda”&.year>2009}.model
- (更多灵感来自CSS选择器)
.automobiles.maker:val(“本田”).model
- (更多灵感来自XPath)
$。汽车[?(@.maker='Honda')]。车型
JMESPath是我的首选选项。如果不需要它,这样的事情就不存在了。在像
{n}.User.Order.Product.name这样的复杂结构上使用Hash::extract()
比多次使用foreach
容易得多。也不需要检查变量是否确实存在。它也适用于任何结构,当需要对每个不同的结构进行foreach
时,而不是枯燥的。@dogmatic69:“如果不需要它,它就不存在”——我不相信这种逻辑。有很多东西,特别是在计算领域,是完全无用的,但仍然存在。