javascript - JSON 数据的 SQL 样式 JOIN

标签 javascript jquery json join

有什么方法可以高效的join JSON数据吗?假设我们有两个 JSON 数据集:

{"COLORS":[[1,red],[2,yellow],[3,orange]]}

{"FRUITS":[[1,apple],[2,banana],[3,orange]]}

我想把它变成以下客户端:

{"NEW_FRUITS":[[1,apple,red],[2,banana,yellow],[3,orange,orange]]}

请记住,这里会有数以千计的记录,数据结构要复杂得多。 jQuery 和 vanilla javascript 都很好。还要记住,可能有没有水果的颜色和没有颜色的水果。

注意:为了简单起见,假设两个数据集的顺序相同,但第二个数据集可能有间隙。

最佳答案

Alasql JavaScript SQL 库在一行中完全满足您的需求:

 <script src="alasql.min.js"></script>
 <script>
    var data = { COLORS: [[1,"red"],[2,"yellow"],[3,"orange"]],            
                 FRUITS: [[1,"apple"],[2,"banana"],[3,"orange"]]};

    data.NEW_FRUITS = alasql('SELECT MATRIX COLORS.[0], COLORS.[1], FRUITS.[1] AS [2] \
         FROM ? AS COLORS JOIN ? AS FRUITS ON COLORS.[0] = FRUITS.[0]',
         [data.COLORS, data.FRUITS]);
 </script>

你可以玩this example在 jsFiddle 中。

这是一个 SQL 表达式,其中:

  • SELECT - 选择运算符
  • MATRIX - 修饰符,whci 将结果集从对象数组转换为数组数组
  • 颜色。[0] - COLORS 数组的第一列等。
  • 水果。 1作为2 - 数组 FRUITS 的第二列将作为结果记录集中的第三列存储
  • 来自? AS COLORS - 来自 SQL 语句中名为 COLORS 的参数的数据数组
  • 加入? ON ... - 加入
  • [data.COLORS, data.FRUITS] - 带有数据数组的参数

关于javascript - JSON 数据的 SQL 样式 JOIN,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7251163/

相关文章:

javascript - 我不知道 Object(this) 是什么意思

javascript - 将数组转换为对象键

javascript - jQuery Hover 事件未绑定(bind)到子元素

php - CakePHP + Crud "Add"操作 (POST) 返回 412 前提条件失败

javascript - 如何使用 useContext 更改 Context 的值?

javascript - 以编程方式在 javascript 中创建以下变量?

javascript - jQuery/JavaScript : Why does this freeze?

javascript - 信息窗口内的街景

php - JSON数据没有从objective-C插入到mysql数据库中

python - 将对象列表编码为 JSON 对象