小编Hal*_*100的帖子

按数组中的多个属性对对象进行分组,然后汇总它们的值

通过多个属性对数组中的元素进行分组是与我的问题最接近的匹配,因为它确实通过数组中的多个键对对象进行分组.问题是这个解决方案没有总结属性值然后删除重复项,而是将所有重复项嵌入二维数组中.

预期的行为

我有一个对象数组,必须按shape和分组color.

var arr = [
    {shape: 'square', color: 'red', used: 1, instances: 1},
    {shape: 'square', color: 'red', used: 2, instances: 1},
    {shape: 'circle', color: 'blue', used: 0, instances: 0},
    {shape: 'square', color: 'blue', used: 4, instances: 4},
    {shape: 'circle', color: 'red', used: 1, instances: 1},
    {shape: 'circle', color: 'red', used: 1, instances: 0},
    {shape: 'square', color: 'blue', used: 4, instances: 5},
    {shape: 'square', color: 'red', used: 2, instances: 1}
];
Run Code Online (Sandbox Code Playgroud)

此数组中的对象仅在它们shape和 …

javascript arrays duplicates

16
推荐指数
6
解决办法
2万
查看次数

Firefox 扩展 Manifest v3 - 请求在运行时“访问所有网站的数据”的权限

Manifest v3 Firefox 扩展可以在运行时"Access your data for all websites"请求用户的权限吗?

该选项通常在firefoxabout:addons内置页面中管理:

Firefox 关于:插件页面

我的扩展程序的某些功能需要此权限才能工作,如果尚未授予该权限,我想提示用户授予该权限。

所需的工作流程如下:

当用户单击按钮触发需要此权限的功能时,扩展程序会检查它是否有权访问所有网站的数据。

如果尚未授予权限,则扩展程序应向用户请求该权限。如果已授予权限,则应触发该功能。

我尝试过使用browser.permissionsAPI,但找不到在运行时请求此特定权限的方法。

是否有其他方法可以在运行时向用户请求此权限,或者根本不可能?

编辑:

不确定这是否是预期的行为,但发送仅包含“来源”且未指定“权限”密钥的权限请求似乎有效:

browser.permissions.request({origins: ['<all_urls>']})
Run Code Online (Sandbox Code Playgroud)

permissions firefox-addon firefox-addon-webextensions manifest.json

6
推荐指数
1
解决办法
1697
查看次数

regexp用'x'和'x²'替换'1x'和'1x²'(javascript)

我试图用'x'和'x²'替换数学字符串中的每个'1x'和'1x²':

var str = '1x² + (1x ? 11x)(1x² + 1x²)'; //string to be parsed
var reg = str.replace(/1x/g, 'x');
console.log(reg);
Run Code Online (Sandbox Code Playgroud)

问题是我的正则表达式也匹配"11x"或"21x"之类的数字,这显然不是我想要的.所以我的代码目前输出x² + (x ? 1x)(x² + x²)而不是x² + (x ? 11x)(x² + x²).

我知道为什么会出现这种行为,但我不知道如何解决这个问题.当且仅当它们之前没有像"11x"或"221x"这样的其他数字时,我怎样才能让我的正则表达式匹配每1x和1x²?

javascript regex replace

1
推荐指数
1
解决办法
115
查看次数

SQL 选择接收和发送的每个会话的最新消息

这个问题SQL select only rows with max value on a column不能解决我的问题,尽管它已被标记为重复。

当它们没有这样的约束时,它假定我的列from_id并且to_id是主键(请参阅下面提供的代码)。如果它们是主键,我就无法将我的消息存储在同一个表中。因此,此答案的 SQL 查询多次打印所有重复项,这不是我想要的。请参阅下面的预期行为。

预期行为:我需要从所有对话中选择最新的消息,无论用户是发件人、收件人还是两者兼而有之。每个对话/线程应该只显示一次

示例:查询此表时,我的 SQL 语句应该只输出 msg3 和 msg4,忽略 John 和 Alice 之前交换的所有消息。

在此处输入图片说明

这是我能写的最接近的查询。问题是此查询仅选择用户收到消息的对话。我一直在添加对话,其中用户只是发件人(他没有收到任何回复)到选择。

SELECT * FROM messages where `to_id` = '1' GROUP BY `from_id` ORDER BY `send_date` ASC
Run Code Online (Sandbox Code Playgroud)

这里是usersmessages表:

CREATE TABLE users (
    id INT(11) AUTO_INCREMENT PRIMARY KEY, 
    name VARCHAR(128) NOT NULL
);

CREATE TABLE messages (
    id INT(11) AUTO_INCREMENT PRIMARY KEY, …
Run Code Online (Sandbox Code Playgroud)

mysql sql greatest-n-per-group

1
推荐指数
1
解决办法
1343
查看次数