作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
也许我只是瞎了眼,但我现在已经挣扎了很长一段时间:
我这里有一小段 JS 代码:
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);
指定:获取输入
字段的值,然后隐藏该行并将所有值保存在一个对象中,然后将其插入数组中。
参数取自 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
回调中,因为每次迭代中都需要一个 new 对象。
否则,您将一次又一次地改变同一个对象,将相同对象重复推送到aSites
数组,最终会产生对相同对象的多个引用 对象。
不相关,但您可以使用 $.map
创建数组(或普通 JS links.map()
):
var aSites = $.map(links, function(v) {
return { name: v.split(".")[1], url: v };
});
关于javascript - 将对象推送到 $.each 的数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54667995/
我是一名优秀的程序员,十分优秀!