关于Js的对象数组的操作

0 0 javascript react.js
扶不起来的阿强
扶不起来的阿强

声望值:126 1人

2019-01-26 15:12:15 提问

关注 0关注

收藏 0收藏, 54浏览

两个问题:

第一个问题:

程序如下:

var list = [{name:"xiaoming",age:12},{name:"xiaohong",age:13},{name:"dondong",age:15}];
var newlist = [];
for(var i = 0;i

很明显,想要的结果应该是打印3次,分别输出:[]、[{name:"xiaohong",age:13}]和[{name:"xiaohong",age:13},{name:"dondong",age:15}]

执行结果却是:

mark

为什么会这样?如果我想得到想要的结果,我应该怎么做?

第二个问题:
其实之所以会遇到第一个问题,是因为我在React项目中(刚接触React,我不知道会不会是React的什么特性导致),写下面这个函数的时候遇到的问题:

//oldList是一个数组,里面放的是一个个对象
selectProduct(oldList){
        let list = [],
        for(let i = 0;i

结果:

mark

虽然看起来一个个都有在填进去,但是点击却是空的,length显示是0,但是最后打印list[0]却又证明是有值的,所以很奇怪,不知道是怎么回事,小白一枚,希望各位大佬帮帮忙

请先 登录 后评论

2个回答

  • 小爷ㄆ我不在乎ツ45声望 2018-09-25 09:28

    第一个问题你看你打印的结果第一个是[]空数组 第二个是[{}]数组包含一个对象 第三个是[{},{}]包含两个对象,但你点击的时候点的是newlist对象的引用,及指向内存区域的值,因为你的方法执行完了所以打开都是包含两个对象,你可以运行一下下面的代码看一下,第二个问题同第一个问题 var list = [{name:"xiaoming",age:12},{name:"xiaohong",age:13},{name:"dondong",age:15}]; var newlist = []; for(var i = 0;i<list.length;i++){ if(parseInt(list[i].age) !== 12){ newlist.push(list[i]); } console.log(JSON.stringify(newlist)); }
    请先 登录 后评论
  • セ小猪佩奇107声望 2018-09-25 09:28

    这个代码是没有问题的是浏览器的问题浏览器输出的是对象的引用地址,当你点开下拉的时候才获取,你可以看到当你不点的时候输出的是[],[{...}],[{...},{...}]点开之后才获取引用的东西
    请先 登录 后评论

注册新账号

悬赏追问
10
  • 10
  • 20
  • 50
  • 100
  • 200
  • 输入数值
发布追问