是否已经有一些javascript函数与浏览器中客户端上的cakephp函数Set :: combine和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类似的方式完成它的库或其他东西。 非常感谢提前!
答案 0 :(得分:1)
没有。 Javascript没有像这样内置的东西。
您自己制作这些功能,或者使用像Underscore.js这样的库,它提供了很多这样的工具。
答案 1 :(得分:1)
我会 爱 看到一个JS等同于CakePHP的Hash类,但遗憾的是经过一个小时的谷歌搜索后,我找不到任何东西...... Underscore.js和Sugar .js都有一些过滤功能,但似乎都不适用于多维数组。
在蛋糕中,我经常做这样的事情......
Hash::extract($users, '{n}.User.Posts.{n}.Comments.{n}[published=1]');
如果有人知道这样做的JS库,那将非常感谢提示。
编辑:我已经找到了一些选项,允许这种查询JSON数据(使用他们使用的语法示例)。
JSPath
.automobiles{.maker === "Honda" && .year > 2009}.model
json:select()(受CSS选择者启发更多)
.automobiles .maker:val("Honda") .model
JSONPath(受XPath启发更多)
$.automobiles[?(@.maker='Honda')].model
我认为JSPath看起来最好,所以我将尝试将它与我的AngularJS + CakePHP应用程序集成。
答案 2 :(得分:0)
在纯javascript中这很容易:
result = {}
a.forEach(function(item) {
result[item.User.id] = item.User.name;
})
我意识到这只是一个简单的例子,但关键是javascript支持回调和第一类函数,而且根本不需要像“{n} .User.name”这样的魔法。