javascript - 创建数组,使用 $.each 循环,如果不在数组中则添加值

标签 javascript jquery arrays push each

我在文本中有一堆 .defined 并且想用 javascript 创建一个唯一值数组。所以基本上,对于每个定义了类的 anchor ,我想首先检查数组以查看该对是否已经存在。如果存在,则转到下一个 anchor 。如果不存在,则添加到数组中。这是我尝试使用的代码,但它不会删除重复值。

var arr = new Array();
y = 0;
$("a.defined").each(function() {
var spanishWord = this.text;
var englishWord = this.title;
if(spanishWord in arr) {
    console.log("do nothing");
} else {
    arr.push({key: spanishWord, value: englishWord});
    y++;
}

例如,我在文本中有这些标签:

<a title="read">Leer</a>
<a title="work">Trabajar</a>
<a title="like">Gustar</a>
<a title="read">Leer</a>
<a title="sing">Cantar</a>
<a title="like">Gustar</a>

我希望我的数组看起来像:

Spanish Word  |   English Word
Leer               read
Trabajar           work
Gustar              like
Cantar              sing

但它看起来像:

Spanish Word  |   English Word
Leer               read
Trabajar           work
Gustar              like
Leer                read
Cantar              sing
Gustar              like

有什么想法吗?

最佳答案

我将分两步完成此操作。第一步是消除重复项,一步是创建数组:

http://jsfiddle.net/uN4js/

var obj = {};
$('a.defined').each(function() {
     obj[this.text] = this.title;
});

var arr = [];
for (var prop in obj) {
    if (obj.hasOwnProperty(prop))    
        arr.push({key: prop, value: obj[prop]});
};

console.log(arr);

如果对象足够而且你真的不需要数组,你可以在创建对象后停止。

关于javascript - 创建数组,使用 $.each 循环,如果不在数组中则添加值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22618301/

相关文章:

javascript - Leaflet -> 删除 CircleLayer 不起作用

javascript - 当倒计时达到 0 时开始计数 |普通 JavaScript

Combo 打开时的 Jquery 事件

c - 打印 void 指针的值

javascript - 为什么 "this"值不同?

javascript - Ajax 调用一直给我 "internal server error 500"

javascript - 如何重写 Javascript If 语句以选择类而不是 HTML 中的 ID

java - 在 Java 中对大文件执行 "File to byte[]"时出现 OutOfMemoryError 错误?

Java对象数组

JavaScript 是一个 NaN,但我知道它不是?