所以,我有以下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”)。
有任何帮助吗?谢谢!
答案 0 :(得分:1)
如果我理解你想要实现的目标,你必须遍历NAMES并检查每个元素。例如,您可以使用[].some
javascript函数执行此操作:
if (!NAMES.some(function(v){return v[my_name]})) {
...
} else {
}
答案 1 :(得分:1)
如果你想删除重复,可以使用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));
答案 2 :(得分:1)
首先,我建议制作一个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可以做到这一点,但这应该向你展示你必须解决的基本问题。
答案 3 :(得分:0)
使用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{
}
}