数组对象(如果数组中有NaN)和push的使用总结(持续更新)

这个是我在项目中遇到的问题,虽然简单但当初自己做的时候很难受,所以记录一下。

第一种情况

在这里插入图片描述
在这里插入图片描述
代码:

/*  需求:已知一个A数组对象就是这个[{},{}],然后把A中的值取出来新建字段把这些值赋上去,
    成为一个新的B对象数组 */
var A = [
    {name: 'zhangsan', ages: '38', plcode:'7223238'},
    {name: 'wangwu', ages: '38', plcode:'438'},
    {name: 'zhaoliu', ages: '38', plcode:'73888'},
    ]
 var B = []  
 A.forEach((item, index) => {
     var C = 'obj' + index
     C = {}
     C.newName = item.name
     C.newQlcode= item.plcode
     C.newAges = item.ages
     B.push(C)
 })
console.log(B)

代码(在给A中添加一个新的属性或者是计算过的一个属性):

var A = [
    {name: 'zhangsan', ages: '38', plcode:'728'},
    {name: 'wangwu', ages: '28', plcode:'438'},
    {name: 'zhaoliu', ages: '18', plcode:'738'},
    ]
 var B = []  
 A.forEach((item, index) => {
     item.posom = '属性'
     item.number =Number(item.plcode) - Number(item.age)
 })
console.log(A)

结果:
在这里插入图片描述

第二种情况

在这里插入图片描述
在这里插入图片描述
代码:

// 第二种情况是AB数组里有一个数据是null,这个就不能直接了push还要转换一下才能赋值出去
var AB = [
{name: 'zhangsan', ages: '38', plcode:'7223238'},
null,
{name: 'zhaoliu', ages: '38', plcode:'73888'},
]
var DC = []
AB.forEach((item, index) => {
    if(item != null) { 
    var C = 'obj' + index
    C = {}
    C.newName = item.name
    C.newQlcode= item.plcode
    C.newAges = item.ages
    DC.push(C)
 }
})
console.log(DC)

第三种情况

forEach 和for in是一样的效果

// 第三种是for in的循环
var array = [
{name: 'zhangsan', ages: '38', plcode:'7223238'},
null,
{name: 'zhaoliu', ages: '38', plcode:'73888'},
]
var list = []
for (let index in array) {
    if (array[index] != null) {
        var C = {}
        C.newName = array[index].name
        C.newQlcode = array[index].plcode
        C.newAges = array[index].ages
        list.push(C)
    }
}
console.log(list)

结果:
在这里插入图片描述

第四种情况:js 判断两个数组对象里某一字段是否相等

代码:

let parent = [
    { name: 'aa', managerNo: 11},
    { name: 'bb', managerNo: 12},
    { name: 'cc', managerNo: 16}
]
let child = [
    { name: 'dd', managerNo: 11},
    { name: 'ee', managerNo: 15},
    { name: 'ff', managerNo: 16}
]

for(let item1 of parent) {
    for(let item2 of child) {
        if(item1.managerNo == item2.managerNo) {
            console.log(123456)
        }
    }
}

结果:
在这里插入图片描述
上面的方法是可以的,但如果两个数组过长的话我觉得会很耗性能,而且把if语句放到里面做判断条件是不可行的。

另一种方法:这个方法是对比以后返回你想要的数组集合

let parent = [
    { name: 'aa', managerNo: 11},
    { name: 'bb', managerNo: 12},
    { name: 'cc', managerNo: 16}
]
let child = [
    { name: 'dd', managerNo: 11},
    { name: 'ee', managerNo: 15},
    { name: 'ff', managerNo: 16}
]

const result = child.map(item => parent.some(item1 => item1.managerNo == item.managerNo)?{...item, _checked:true}:{...item,_checked:false})

console.log(result)

结果:
在这里插入图片描述

第五种情况:数组对象根据某一条件来判断满足条件的有几条数据

var array = [
{'name': 'wangwu', 'age': '23'},
{'name': 'zhangsan', 'age': '45'},
{'name': 'zhaoliu', 'age': '34'},    
{'name': 'laowang', 'age': '53'},
{'name': 'laowang', 'age': '53'}
]
//知道循环次数
var nu = 0
array.forEach(item => {
if (item.age === '53') {
  nu++
}
})
console.log(nu)

打印的结果就是这样的:::
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

群狼之虎

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值