【问题标题】:giving a different value to a variable on each different value from a JavaScript array在 JavaScript 数组中的每个不同值上为变量赋予不同的值
【发布时间】:2017-09-10 17:54:36
【问题描述】:

我有一个包含超过一百万个条目的 JS 数组。

我希望 JavaScript 为数组中的每个不同值分配一个特定的颜色来标记

说我的数组包含这个:

var foo = new Array([10,20,30,40,50,36,60,70,80,90,100]);

值得知道我的数组包含 58 个不同的值。

我正在尝试做这样的事情:

if (foo.every(10)) flag = "red";
if (foo.every(20)) flag =  "yellow";

我需要一种方法来为数组中的所有值执行此操作,而不必将上述行重复 58 次。

请注意,我知道该标志将被覆盖,并且我的代码中的标志对于每个不同的值都是唯一的。

还请注意,数组是使用 PHP 从 MySQL 表中作为 JSON 数据导入的,因此任何解决此问题的 PHP 方法也将受到赞赏。

【问题讨论】:

  • 您正在寻找的是将值映射到唯一的颜色,然后您必须创建一个对象,该对象在所有不同的可能值及其各自关联的颜色之间建立键/值关联。
  • 您需要指定颜色类型应该是什么+您需要从数组中获取所有唯一值。如果您想重复分配 58,您必须生成不同的颜色。也许是随机颜色?

标签: javascript php mysql arrays json


【解决方案1】:

简单的 JS 解决方案:

var numberToColorDictionary = {
    10: "red",
    20: "yellow"
    ...
}

// After this runs, 'flags' should contain all the right flags. 
var flags = foo.map(function(number) {
    return numberToColorDictionary[number];
});

不过,这听起来确实像是您查询数据库时出错了。如果数字是来自 MySQL 的 id,您应该使用 join 来获取正确的标志。

顺便说一句,您不需要new Array 语法。做吧:

var foo = [10,20,30,40,50,36,60,70,80,90,100];

【讨论】:

  • 这看起来是正确的尝试。并且我从数据库中获得的值不是 ids 也不是偶数。我们将在一分钟后回来更新
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-22
  • 2023-03-12
相关资源
最近更新 更多