也许我只是失明,但我现在正在努力争取很长一段时间:
我在这里有一小段JS-Code:
var linkInput = $('#Link input.gwt-TextBox').val();
var parentRow = $('#Link').parent().parent();
var links = linkInput.split("|");
// hide text-input
$(parentRow).hide();
// get rid of empty elements
links = links.filter(Boolean);
var aSites = [];
var oSite = {};
$(links).each(function (k, v) {
splits = v.split(".");
domainName = splits[1];
oSite.name = domainName;
oSite.url = v;
aSites.push(oSite);
});
console.log(aSites);
要指定:获取input
-field的值,然后隐藏该行并将所有值保存在对象中,然后将其推送到数组中。
该参数取自google Chrome的控制台标签:
var links = ["www.myshop1.de/article/1021581", "https://www.myshop2.de/article/1021581"] [type: object]
我想,我遍历这个对象的所有元素(在这种情况下2次),将值推入对象,将对象推入数组,以便随后访问所有对象。
但是,在某些时候,我似乎覆盖了以前的值,因为我的输出看起来像这样:
0: {name: "myshop1", url: "https://www.myshop1.de/1021581"}
1: {name: "myshop2", url: "https://www.myshop2.de/1021581"}
length: 2
__proto__: Array(0)
我的错在哪里?是否有更聪明的方法来实现这一目标?
旁注:
我试图只使用一个数组(不添加对象),但似乎我不能使用这样的关联键:
var myKey = "foo";
var myValue = "bar";
myArray[myKey] = myValue
你应该移动这个:
var oSite = {};
...在它下面的each
回调中,因为你需要在每次迭代中使用一个新对象。
否则,您一次又一次地改变同一个对象,将相同的对象重复推送到aSites
数组,该数组最终会对同一个对象进行多次引用。
不相关,但你可以使用$.map
来创建你的数组(或香草JS links.map()
):
var aSites = $.map(links, function(v) {
return { name: v.split(".")[1], url: v };
});