将一个值与 Javascript 中数组中的所有值进行比较
Compare a value with all the values in array in Javascript
我正在尝试实现以下功能 运行 但我卡得很厉害。我有一个对象 "gidsAll",我想将其与每个特征进行比较:feature.attributes.__gid.
该函数在 Openlayers 中用于特征(点和线)的样式设置。它针对每个 "feature.attributes.__gid" 执行,我想要的是简单地将此值与 "gidsAll" 内的所有值进行比较。如果该值与 "gidsAll" 中的值之一匹配,则 return 绿色,否则 return 红色。
我想我需要在某个地方使用循环,但我无法让它工作。
var styleContext = {
getColor: function (feature) {
//alert(typeof(feature));//object
// for (key in gidsAll){
if (Math.round(feature.attributes.__gid) == Number(gidsAll)){
return "green";
} else {
return "red";
}
//}
}
};
您应该在 return red
之前检查对象中的所有属性,因为您需要确保没有 green
匹配项。请注意,return "red"
在循环之外:
var styleContext = {
getColor: function (feature) {
for (key in gidsAll) {
if (Math.round(feature.attributes.__gid) == Number(gidsAll)) {
return "green";
}
}
return "red";
}
};
您可以使用 Object.keys()
遍历所有对象属性。
Object.keys
returns all the enumerable object's own properties of the object it receives.
var styleContext = {
getColor: function (feature) {
var objectKeys = Object.keys(gidsAll);
for (var i = 0; i < objectKeys.length; i++)
{
if (Math.round(feature.attributes.__gid) === parseInt(gidsAll[objectKeys[i]], 10))
{
return "green";
}
}
return "red"; //nothing has been found
//}
}
只是另一个使用 ES5 Object.keys and Array.prototype.some 方法的版本:
var styleContext = {
getColor: function (feature) {
return Object.keys(gidsAll).some(function (p) {
return Math.round(feature.attributes.__gid) == gidsAll[p];
})? 'green' : 'red';
}
};
如果你经常这样做,使用循环更快,但是 keys 和 some 是简洁的。
我正在尝试实现以下功能 运行 但我卡得很厉害。我有一个对象 "gidsAll",我想将其与每个特征进行比较:feature.attributes.__gid.
该函数在 Openlayers 中用于特征(点和线)的样式设置。它针对每个 "feature.attributes.__gid" 执行,我想要的是简单地将此值与 "gidsAll" 内的所有值进行比较。如果该值与 "gidsAll" 中的值之一匹配,则 return 绿色,否则 return 红色。
我想我需要在某个地方使用循环,但我无法让它工作。
var styleContext = {
getColor: function (feature) {
//alert(typeof(feature));//object
// for (key in gidsAll){
if (Math.round(feature.attributes.__gid) == Number(gidsAll)){
return "green";
} else {
return "red";
}
//}
}
};
您应该在 return red
之前检查对象中的所有属性,因为您需要确保没有 green
匹配项。请注意,return "red"
在循环之外:
var styleContext = {
getColor: function (feature) {
for (key in gidsAll) {
if (Math.round(feature.attributes.__gid) == Number(gidsAll)) {
return "green";
}
}
return "red";
}
};
您可以使用 Object.keys()
遍历所有对象属性。
Object.keys
returns all the enumerable object's own properties of the object it receives.
var styleContext = {
getColor: function (feature) {
var objectKeys = Object.keys(gidsAll);
for (var i = 0; i < objectKeys.length; i++)
{
if (Math.round(feature.attributes.__gid) === parseInt(gidsAll[objectKeys[i]], 10))
{
return "green";
}
}
return "red"; //nothing has been found
//}
}
只是另一个使用 ES5 Object.keys and Array.prototype.some 方法的版本:
var styleContext = {
getColor: function (feature) {
return Object.keys(gidsAll).some(function (p) {
return Math.round(feature.attributes.__gid) == gidsAll[p];
})? 'green' : 'red';
}
};
如果你经常这样做,使用循环更快,但是 keys 和 some 是简洁的。