我将从网址获取的数据添加到数组 crop 。在此之后,我将在新阵列 cropsSoFar 的帮助下检查重复的作物。
var crops=[];
for(int i=0; i<results.length;i++)
{
var terrains= results.features[i].attributes.Terrain_Id;
var rawDataOfTerrain=getjsondata("http://or.org");
var trsetdata= jQuery.parseJSON(tersetjson).d.results;
crops.push(trsetdata);
}
var cropsSoFar= [];
for(int i=0; i<crops.length;i++)
{
var crop= crops[i];
if(crop in cropsSoFar)
{
crops.pop(crop);
}
cropsSoFar.push(crops[i]);
}
if(crops.length!=1)
alert("Please select terrains with the same crop");
这是在数组中搜索字符串的正确方法吗?如果是这样,有一种更简单的方法吗?如果没有,我哪里错了?
答案 0 :(得分:3)
您可以使用crops
检查首次创建indexOf
时的重复项。
var crops = [];
for( int i = 0; i < results.length; i++ ) {
var terrains = results.features[i].attributes.Terrain_Id;
var rawDataOfTerrain =getjsondata("http://or.org");
var trsetdata = $.parseJSON(tersetjson).d.results;
if( crops.indexOf(trsetdata) === -1 )
crops.push(trsetdata);
}
if( crops.length != 1 )
alert("Please select terrains with the same crop");
答案 1 :(得分:0)
如果您的数组是一个简单的字符串数组,请使用doc中显示的Array.prototype.indexOf
。
var list = ["my", "simple", "strings", "array"];
var founds = [];
var i = list.indexOf("simple");
if (i != -1)
founds.push(list[i]);
如果您要执行的操作是过滤列表,则应使用Array.prototype.filter
,将回调函数作为参数并返回给您新的数组:
function getMyStrings(value) {
return value.match(/m/);
}
var filtered = ["my", "simple", "strings", "array"].filter(getMyStrings);
如果您只有一个结果,则可以使用find
方法。它需要一个回调,但它只获得一个值。
传递回调函数的好处是,您可以轻松处理复杂对象而不是纯字符串。