在JavaScript中呈现数组中的所有元素的错误
问题描述:
您好我有一个名为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);
});
答
Lee是正确的 - 您的过滤器函数需要返回true或false,以指示您是要保留还是丢弃该元素。这里有一个过滤器,只接受动物字母的一个简单的例子:“我”在他们的名字:
<script>
var animals = ['cat', 'dog', 'mouse', 'fish', 'gorilla', 'elephant', 'chicken', 'rhino'];
var filtered = animals.filter(
function(element, index, array) {
if (element.indexOf('i') !== -1) {
return true;
}
return false;
}
);
console.log(animals);
console.log(filtered);
</script>
您可以找到Array.filter方法文档在这里: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/filter
我会删除的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/ –