首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Javascript对象覆盖以前对象

Javascript对象覆盖以前对象
EN

Stack Overflow用户
提问于 2018-07-12 03:48:57
回答 2查看 71关注 0票数 0

所以我试着用javascript去掉html,但是有困难,我添加到数组中的每个新对象都会改变之前添加的每个对象:

代码语言:javascript
复制
$.get("Readfrom.php", null, function(html) {
  //console.log(html);
  var data = html;
  var uls = $("<ul>").html(data)[0].getElementsByTagName('ul');
  var length = uls.length;
  var elements;
  var object = {
    id: 'meh',
    name: '',
    lastN: '',
    identyfier: '',
  };
  var arrayb = new Array();
  for (var i = 2; i < length; ++i) {
    elements = $("<ul>").html(data)[0].getElementsByTagName('ul')[i].getElementsByTagName('li');

    var elemLength = elements.length;
    object.id = elements[0].firstChild.nodeValue;
    object.name = elements[1].firstChild.nodeValue;
    object.lastN = elements[2].firstChild.nodeValue;
    object.identyfier = elements[3].firstChild.nodeValue;
    arrayb.push(object);
    console.log(object);
  }
  console.log(arrayb);
}, "text");

这是我为对象获得的控制台输出

代码语言:javascript
复制
Object { id: "1", name: "Peter", lastN: "La'habo", identyfier: "ABsdf23" }

Object { id: "2", name: "Liam", lastN: "Peters", identyfier: "dfghfgh54" }

Object { id: "3", name: "Super", lastN: "man", identyfier: "gff$$#'\\" }

Object { id: "4", name: "Jimmy\t", lastN: "Bobb's", identyfier: "fghj234\"234df" }

Object { id: "5", name: "Richárd", lastN: "Moore", identyfier: "dfghfg" }

Object { id: "6", name: "Jack", lastN: "Hurlock", identyfier: " fffffff" }

Object { id: "7", name: "Steve", lastN: "Stanley", identyfier: "fghgggg433" }

这是数组

代码语言:javascript
复制
0: Object { id: "7", name: "Steve", lastN: "Stanley", … }

1: Object { id: "7", name: "Steve", lastN: "Stanley", … }
​
2: Object { id: "7", name: "Steve", lastN: "Stanley", … }
​
3: Object { id: "7", name: "Steve", lastN: "Stanley", … }
​
4: Object { id: "7", name: "Steve", lastN: "Stanley", … }
​
5: Object { id: "7", name: "Steve", lastN: "Stanley", … }
​
6: Object { id: "7", name: "Steve", lastN: "Stanley", … }
​
length: 7

我真的对这里发生的事情感到困惑。为什么新对象会覆盖所有已有的对象?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-07-12 04:16:18

假设其他一切都是正确的,这里有一种稍微不那么繁琐的方法来声明每个对象:

代码语言:javascript
复制
$.get("Readfrom.php", null, function(html) {
  var arrayb = $("<ul>")
    .html(html)
    .find('ul')
    .toArray()
    .slice(2) // starting at index 2
    .map(function (ul) {
      var elements = $(ul).children('li');

      return {
        id: elements[0].firstChild.nodeValue,
        name: elements[1].firstChild.nodeValue,
        lastN: elements[2].firstChild.nodeValue,
        identyfier: elements[3].firstChild.nodeValue
      };
    });

  console.log(arrayb);
}, "text");
票数 0
EN

Stack Overflow用户

发布于 2018-07-12 03:54:01

您正在推送"object“的相同声明。

尝试在for中声明对象变量

代码语言:javascript
复制
    $.get("Readfrom.php",null,function(html){
//console.log(html);
var data=html;
var uls=$("<ul>").html(data)[0].getElementsByTagName('ul');
var length= uls.length;
var elements;
var arrayb= new Array();
for (var i=2;i<length;++i)
{

let object={
id:'meh',
name:'',
lastN:'',
identyfier:'',
};
elements=$("<ul>").html(data)[0].getElementsByTagName('ul')[i].getElementsByTagName('li');

var elemLength=elements.length;
object.id=elements[0].firstChild.nodeValue;
object.name=elements[1].firstChild.nodeValue;
object.lastN=elements[2].firstChild.nodeValue;
object.identyfier=elements[3].firstChild.nodeValue;
arrayb.push(object);
console.log(object);


}
console.log(arrayb);
},"text");
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51293240

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档