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