[英]JS check if the value of object exists
因此,我有以下js设置:
var NAMES = [];
function INFO(id,first,middle,last){
var newMap = {};
newMap[id] = [first, middle, last];
return newMap ;
}
然后,
for (var j = 0; j < NUMBER.length; j++) { //let say it there are three values
var my_name = all_names[j]; // has "185, 185, 185"
if (NAMES[my_name] !== 185){ //Needs to check here
NAMES.push(INFO(my_name,"sean","sdfsd","sdfsfd"));
}else{
}
}
alert(JSON.stringify(NAMES , null, 4));
这是警报的屏幕截图:
在此示例中,我将数字硬编码为“ 185”。 我需要检查id of 185
存在,然后跳至else
。 我不确定如何检查。 我尝试了typeof
, undefined
等,但是没有运气。 (换句话说,我应该只有一个“ 185”)。
有什么帮助吗? 谢谢!
如果我正确理解您要实现的目标,则必须遍历NAMES并检查每个元素。 例如,您可以使用[].some
javascript函数来实现:
if (!NAMES.some(function(v){return v[my_name]})) {
...
} else {
}
如果您要删除重复项,则可以使用NAMES
作为对象而不是像这样的数组
var all_names = [185, 185, 181],
NAMES = {};
for (var j = 0; j < all_names.length; j++) { //let say it there are three values
var my_name = all_names[j]; // has "185, 185, 185"
NAMES[my_name] = ["sean","sdfsd","sdfsfd"];
}
alert(JSON.stringify(NAMES, null, 4));
首先,我建议使用此工具制作JS Fiddle或CodePen,以便人们可以看到代码正在运行。
我认为问题在于NAMES[my_name]
没有按照您的想法做。 NAMES是一个数组,因此当您说NAMES[my_name]
您实际上是在数组中查询ITEM,因此您可以获取在INFO函数中创建的整个对象。 您真正想要的是查看对象是否具有与值匹配的属性(例如,my_names数组中的“ 185”)。
这不是最漂亮的代码,但是它将向您展示如何做您真正想做的事情:
var NAMES = [];
function INFO(id,first,middle,last){
var newMap = {};
newMap[id] = [first, middle, last];
return newMap ;
}
all_names = ["185", "186", "185"]
for (var j = 0; j < all_names.length; j++) {
var my_name = all_names[j];
if (NAMES.length == 0) {
NAMES.push(INFO(my_name,"sean","sdfsd","sdfsfd"));
} else {
var match = false;
for (var x = 0; x < NAMES.length; x++) {
console.log(NAMES[x][my_name] + ' : ' + my_name);
if(NAMES[x][my_name]) {
match = true;
}
}
if (!match) {
NAMES.push(INFO(my_name,"sean","sdfsd","sdfsfd"));
}
}
}
alert(JSON.stringify(NAMES , null, 4));
请注意,如果它查看NAMES[x][my_name]
-这是在询问数组索引“ x”处的项目是否具有“ my_name”属性(例如“ 185”)。 我相信这确实是您想要做的。 在午夜之后,我向您保证,还有更多简洁明了的JS可以执行此操作,但这应该向您显示您必须解决的基本问题。
使用hasOwnProperty
方法尝试以下代码:
for (var j = 0; j < NUMBER.length; j++) { //let say it there are three values var my_name = all_names[j]; // has "185, 185, 185" if (!NAMES[my_name].hasOwnProperty("185")){ //Needs to check here NAMES.push(INFO(my_name,"sean","sdfsd","sdfsfd")); }else{ } }
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.