gpt4 book ai didi

javascript - underscorejs 采摘二维数组

转载 作者:行者123 更新时间:2023-11-30 10:17:08 25 4
gpt4 key购买 nike

第一次使用下划线,我卡住了,找不到例子。

我的数据是:

[{
"store_name": "Store 1",
"franchisee_id": "id01",
"dish_menu": "Breakfast",
"dish_count": "17"
}, {
"store_name": "Store 1",
"franchisee_id": "id01",
"dish_menu": "Light Meals",
"dish_count": "7"
}, {
"store_name": "Store 1",
"franchisee_id": "id01",
"dish_menu": "Sandwiches",
"dish_count": "12"
}, {
"store_name": "Store 2",
"franchisee_id": "id02",
"dish_menu": "Breakfast",
"dish_count": "7"
},
............
]

我已经设法(在此处的一些帮助下)使用以下链接命令提取不同的 store_name,然后将其放入我正在构建的 HTML 语句中:

var stores = _.chain(json).pluck("store_name").sort().uniq(true).value();
var tempHTML = "";

stores.forEach(function (entry) {
tempHTML = tempHTML + '<option value="' + entry + '">' + entry + '</option>';
});

但我正在尝试将 franchisee_id 与不同的 store_name 相匹配,并基本上构建我的 HTML,如下所示:

stores.forEach(function (entry) {
tempHTML = tempHTML + '<option value="' + FRANCHISEE_ID + '">' + STORE_NAME + '</option>';
});

有没有办法使用 store_name 值_.pluck franchise_id 的值?这两个字段之间存在 1:1 的关系,因此即使获得“首次找到”的 franchise_id 也可以。谢谢!

最佳答案

你可以做这样的事情来获得你想要的顺序的 id/name 对:

var map_id_to_name = function(m, o) {
m[o.franchisee_id] = o.store_name;
return m;
};
var arrayify = function(name, id) {
return [ name, id ];
};
var stores = _(data).chain()
.reduce(map_id_to_name, { })
.map(arrayify)
.sortBy(_.first)
.value();

演示:http://jsfiddle.net/ambiguous/9xxS6/

这将为您提供 stores 中的数组数组你可以通过旋转来构建你的<option> ; stores看起来像这样:

[
[ "Store 1", "id01" ],
[ "Store 2", "id02" ],
...
]

商店名称将位于内部数组的第一个条目中,而特许经营 ID 将位于第二个条目中。整个事情将按商店名称排序。如果您想要不区分大小写的排序,那么您可以 .sortBy(function(a) { return a[0].toLowerCase() })相反。

reduce(map_id_to_name, { })使用 Object 收集唯一的 id/name 对以自动强制唯一性(毕竟 Object 中的键是唯一的)。那么map(arrayify)将 Object 转换为数组的数组,以便您可以对事物进行排序。您可以改用对象数组,这只是对 map 的一个小改动。和 sortBy电话。

关于javascript - underscorejs 采摘二维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23165803/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com