【发布时间】:2018-04-26 20:23:27
【问题描述】:
我有一个名为 Filter 的对象,它存储有关汽车类型的信息。此信息通过 AJAX 检索,并在第一次 ajax 调用时创建对象 0-10 并将其推送到数组。在第二次 ajax 调用中,返回更多汽车类型并将其添加到数组中。
我的问题是:我只想将对象添加到具有唯一标签的数组中。所以对于下一个 AJAX 调用,我只想将带有标签“Hybrid”的对象添加到数组中。这就是我所拥有的,由于某种原因 indexOf 方法似乎不起作用,并且正在将具有相同标签的所有新汽车类型添加到数组中。
代码:
var filter_object = Object.create(Filter);
filter_object.init(label, $(this).val());
if (types.indexOf(filter_object.label) == -1)
types.push(filter_object);
var Filter = {
init: function (label, value) {
this.label = label;
this.value = value;
}
};
示例对象:
0: {label: "All Car Types", value: "on"}
1: {label: "Small Cars", value: "CCAR,ECAR,CDAR,EDAR"}
2: {label: "Medium Cars", value: "ICAR,SCAR,IDAR"}
3: {label: "Large Cars", value: "FCAR,PCAR,FDAR"}
4: {label: "SUVs & Crossovers", value: "IFAR,SFAR,CFAR,RFAR,FFAR,PFAR"}
5: {label: "Vans", value: "MVAR,RVAR,FVAR"}
6: {label: "Luxury", value: "LCAR,LDAR"}
7: {label: "Convertibles", value: "STAR"}
8: {label: "Sports", value: "SSAR"}
9: {label: "Commercial", value: "SKAR"}
10: {label: "Specialty", value: "XXAR"}
// Next AJAX Call
11: {label: "All Car Types", value: "on"}
12: {label: "Small Cars", value: "ECAR,MCAR,CCAR,CDAR,EDAR"}
13: {label: "Hybrids", value: "ICAH,FCAH"}
【问题讨论】:
-
您不能用其他对象测试对象。它们是不同的实例,因此不相等,即
{} != {} -
即使可以,将标签传递给
indexOf()也不起作用,因为数组不包含字符串而是对象。另外,为什么不首先使用对象而不是数组,其中标签是键,值是值?这样,密钥是否已经存在都没有关系;它只会被覆盖。 -
可以看一个物体吗?我只想查看对象的标签与 Types 数组中对象的标签。
-
@Michael 是的,但不是
indexOf()。检查你得到的答案。 -
你能提供更多的代码吗?缺少很多有用的信息。
标签: javascript jquery arrays ajax object