这个是我在项目中遇到的问题,虽然简单但当初自己做的时候很难受,所以记录一下。
第一种情况
代码:
/* 需求:已知一个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)
打印的结果就是这样的:::