Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 关于在数组中收集值的最佳方法的建议_Javascript_Jquery_Arrays_Dom - Fatal编程技术网

Javascript 关于在数组中收集值的最佳方法的建议

Javascript 关于在数组中收集值的最佳方法的建议,javascript,jquery,arrays,dom,Javascript,Jquery,Arrays,Dom,我需要保存所有的颜色值​​我的网站页面中的元素,并将它们放入数据库中。我想我应该这样做: 首先,我要获取rgb值​​每个元素的 $("*").each(function(e){ createColorArray($(this).css('backgroundColor')); }); 然后在函数createColorArray中将所有值存储到一个数组中​​都过去了 function createColorArray(rgbColor) { //Create rgb array } 最

我需要保存所有的颜色值​​我的网站页面中的元素,并将它们放入数据库中。我想我应该这样做:

首先,我要获取rgb值​​每个元素的

$("*").each(function(e){
  createColorArray($(this).css('backgroundColor'));
});
然后在函数createColorArray中将所有值存储到一个数组中​​都过去了

function createColorArray(rgbColor)
{
  //Create rgb array
}
最后从我的数组中删除重复项

function removeDoupe(ar) {
var temp = {};
for (var i = 0; i < ar.length; i++)
    temp[ar[i]] = true;
var r = [];
for (var k in temp)
    r.push(k);
return r;
}
功能移除组(ar){
var temp={};
对于(变量i=0;i
现在我的问题是,, 建议如何创建阵列?直接在$(“*”)中,还是像我想的那样在专用函数中?此外,我还需要在新数组“clean”中多次删除重复项,以及rgb值,我也会给出该值在原始数组中的次数。
一些示例代码?

正如我在评论中提到的,为什么不在前面检查重复的代码?一个简单的例子:

var colors = [];

$('*').each(function(i, el){    

    var $element = $(el),
        color = $element.css('background-color');

    if(!~$.inArray(color, colors))
        colors.push(color);
});

console.log(colors);

正如我在评论中提到的,为什么不在前面检查重复项呢?一个简单的例子:

var colors = [];

$('*').each(function(i, el){    

    var $element = $(el),
        color = $element.css('background-color');

    if(!~$.inArray(color, colors))
        colors.push(color);
});

console.log(colors);

最好的方法是在工作的同时完成这一切。以下是一种可能的方法:

var colors = new Array();
var tempColors = {};

$(".colors").each(function(){
    var c = $(this).val();
    // check if the color exists without looping
    if(typeof tempColors[c] == "undefined"){
        // if it doesn't, add it to both variables.
        tempColors[c] = true;
        colors.push(c);
    }
});
这将产生两个变量:一个是一个对象,您不必通过循环来确定您以前是否定义了它,另一个是一个颜色数组,您可以使用标准javascript推送它

如果不重用它,则不应将其作为专用函数,但可以将其作为如下对象:

var colors = function(){
    var self = this;
    self.array = new Array();
    // this is a dedicated check function so we don't need separate variables.
    // returns true if the color exists, false otherwise
    self.check = function(color){
        for(var i =0; i < self.array.length; i++){
            if(self.array[i] === color) return true;
        }
        return false;
    }
    self.add = function(color){
        // use the check function, if it returns false, the color does not exist yet.
        if(!self.check(color)){
            self.array.push(c);
        }
    }
}
var colors=function(){
var self=这个;
self.array=新数组();
//这是一个专用的检查函数,因此我们不需要单独的变量。
//如果颜色存在,则返回true,否则返回false
自检=功能(颜色){
for(var i=0;i

然后可以使用
var colorlist=new colors()实例化一个colorlist并使用
颜色列表添加颜色。添加(“dd0300”)
。访问阵列可以通过请求
colorlist.array

来完成。最好的方法是在处理阵列时执行所有操作。以下是一种可能的方法:

var colors = new Array();
var tempColors = {};

$(".colors").each(function(){
    var c = $(this).val();
    // check if the color exists without looping
    if(typeof tempColors[c] == "undefined"){
        // if it doesn't, add it to both variables.
        tempColors[c] = true;
        colors.push(c);
    }
});
这将产生两个变量:一个是一个对象,您不必通过循环来确定您以前是否定义了它,另一个是一个颜色数组,您可以使用标准javascript推送它

如果不重用它,则不应将其作为专用函数,但可以将其作为如下对象:

var colors = function(){
    var self = this;
    self.array = new Array();
    // this is a dedicated check function so we don't need separate variables.
    // returns true if the color exists, false otherwise
    self.check = function(color){
        for(var i =0; i < self.array.length; i++){
            if(self.array[i] === color) return true;
        }
        return false;
    }
    self.add = function(color){
        // use the check function, if it returns false, the color does not exist yet.
        if(!self.check(color)){
            self.array.push(c);
        }
    }
}
var colors=function(){
var self=这个;
self.array=新数组();
//这是一个专用的检查函数,因此我们不需要单独的变量。
//如果颜色存在,则返回true,否则返回false
自检=功能(颜色){
for(var i=0;i

然后可以使用
var colorlist=new colors()实例化一个colorlist并使用
颜色列表添加颜色。添加(“dd0300”)
。访问数组可以通过请求
colorlist.array

来完成。为什么首先要添加重复项?在将值添加到数组之前,您可能应该先检查重复项。有一点,但在我看来,通过在$(*)使用属性选择器-var colorArray=$(“[背景色]”).attr(“背景色”);为什么要首先添加重复项?在将值添加到数组之前,您可能应该先检查重复项。在我看来,这有一点提高了性能,即使用$(*)之外的重复值控制,使用属性选择器-var colorArray=$(“[background color]”)。attr(“背景色”);我还将执行$('body').find('*'),以便忽略中的元素。@LShetty是的,我故意为OP留下一些调优工作;)我还将执行$('body').find('*'),以便忽略中的元素。@LShetty是的,我故意为OP;)留下一些调优工作)