0
您好我有一个名为wincolor的数组,由一个包含243个元素的循环生成。我有另一个名为uniqueparty的数组,它将过滤器应用于wincolor中的所有元素。我面临的问题是,当呈现uniqueparty时,它将渲染wincolor中的243个元素中的9个。它需要渲染全部243个元素。有人能帮我排除这个错误吗?在JavaScript中呈现数组中的所有元素的错误
var resultData = [];
var uniqueparty= [];
var wincolor = [];
$.getJSON("https://spreadsheets.google.com/feeds/list/1IoNqeReOPKNFrYMlK2rnJVuMaLeAgnZneLbKYSQ7bs4/od6/public/values?alt=json", function(data) {
var len = data.feed.entry.length;
for (var i=0; i<len; i++) {
//first row "title" column
var current = data.feed.entry[i];
resultData[i]= [
current.gsx$constituency.$t, //0
current.gsx$winner2010.$t, //1
current.gsx$winningparty.$t, //2
current.gsx$candidatename1.$t, //3
current.gsx$party1.$t,//4
current.gsx$candidatename2.$t,//5
current.gsx$party2.$t,//6
current.gsx$candidatename3.$t,//7
current.gsx$party3.$t//8
];
wincolor[i]=[current.gsx$winningparty.$t];
}
uniqueparty = wincolor.filter(
function(a){
if (!this[a]) {
this[a] = 1; return a;
}
},{}
);
document.write("Unique Party: "+uniqueparty.length+"<br>");
document.write("Wincolor: "+wincolor.length);
});
我会删除的API键和向我们展示一个数据的例子。你也可以改变'wincolor [i] = [current.gsx $ winningparty。$ t];'添加if(wincolor.indexOf(current.gsx $ winningparty。$ t)== - 1)uniqueparty [uniqueparty .length ] = current.gsx $ $ winningparty吨。 wincolor [i] = [current.gsx $ winningparty。$ t];'并放弃过滤器 – mplungjan
您需要从过滤器函数返回true以保持元素,看起来好像你没有这样做? – Lee
试试这个http://jsfiddle.net/_alexander_/6L8b9eLr/ –