Skip to content

1. 根据属性值检索对象数组

找到对象数组中健名为name的的健值对的键值为solid的那个对象。

js
var a = [{
	name: "zain",
	age: 28
},
{
	name: "jack",
	age: 29
},
{
	name: "sank",
	age: 30
},
{
	name: "solid",
	age: 31
}
];
function test() {
a.forEach(element => {
	if (element.name == "solid") {
		if (a.indexOf(element) > -1) {
			var i = a.indexOf(element);
			a.splice(i, 1);
		}
	}
});
}
test();
console.log(a);
var a = [{
	name: "zain",
	age: 28
},
{
	name: "jack",
	age: 29
},
{
	name: "sank",
	age: 30
},
{
	name: "solid",
	age: 31
}
];
function test() {
a.forEach(element => {
	if (element.name == "solid") {
		if (a.indexOf(element) > -1) {
			var i = a.indexOf(element);
			a.splice(i, 1);
		}
	}
});
}
test();
console.log(a);

3. 求对象数组中,其中一个属性的和

这里使用Vue模板为例子:

  • data()中:
js
this.LivetableData = 
[
    {
        je: '100',//注意要求和的值是字符串类型!
        se: 123,
    },{
        je: 200,
        se: '123',
    },{
        je: '300',
        se: 123,
    }
]
this.LivetableData = 
[
    {
        je: '100',//注意要求和的值是字符串类型!
        se: 123,
    },{
        je: 200,
        se: '123',
    },{
        je: '300',
        se: 123,
    }
]
  • methods中:
js
SumSubmit() {
//首先将要求和的String类型转换为Number类型
for (var i = 0; i < this.LivetableData.length; i++) {
	this.LivetableData[i].je = Number(this.LivetableData[i].je)
}
//然后提取需要的属性
let arrnew = this.LivetableData.map((item, index) => {
	return Object.assign({}, {
		'je': item.je
	})
})
//求和函数
function sum(arr) {
		var s = 0;
		for (var i = 0; i < arr.length; i++) {
			s += arr[i];
		}
		return s;
	}
//提取对象数组为数组,求和
console.log(sum(arrnew.map(item => item.je))) //打印
}
SumSubmit() {
//首先将要求和的String类型转换为Number类型
for (var i = 0; i < this.LivetableData.length; i++) {
	this.LivetableData[i].je = Number(this.LivetableData[i].je)
}
//然后提取需要的属性
let arrnew = this.LivetableData.map((item, index) => {
	return Object.assign({}, {
		'je': item.je
	})
})
//求和函数
function sum(arr) {
		var s = 0;
		for (var i = 0; i < arr.length; i++) {
			s += arr[i];
		}
		return s;
	}
//提取对象数组为数组,求和
console.log(sum(arrnew.map(item => item.je))) //打印
}

4. 提取对象数组中的某一个属性组成新数组

js
//初始对象数组
arrold = [
  {name: "name1", age: "1"},
  {name: "name2", age: "2"},
  {name: "name3", age: "3"},
  {name: "name4", age: "4"},
  {name: "name5", age: "5"},
  {name: "name6", age: "6"}
]
//期望数组:
arrnew = ["name1","name2","name3","name4","name5","name6"]
//初始对象数组
arrold = [
  {name: "name1", age: "1"},
  {name: "name2", age: "2"},
  {name: "name3", age: "3"},
  {name: "name4", age: "4"},
  {name: "name5", age: "5"},
  {name: "name6", age: "6"}
]
//期望数组:
arrnew = ["name1","name2","name3","name4","name5","name6"]
  • 方法一:
js
let arr = [];
arrold.forEach(e => { 
    arrnew.push(e.name)
})
let arr = [];
arrold.forEach(e => { 
    arrnew.push(e.name)
})
  • 方法二:
js
let arrnew = arrold.map((obj,index) => {
    return obj.name;
}).join(",").split(',')
let arrnew = arrold.map((obj,index) => {
    return obj.name;
}).join(",").split(',')
  • 方法二改进:
js
let arrnew = arrold.map((item,index) => {
    return Object.assign({},{'name':item.name})
})
let arrnew = arrold.map((item,index) => {
    return Object.assign({},{'name':item.name})
})

关于Object.assign(target,sources)方法

拷贝源对象且可枚举的属性到目标对象,如果目标对象中的属性具有相同的键,则属性将被源中的属性覆盖。例:

js
const object1 = { a: 1, b: 2, c: 3 }; 
// object2: a=1, b=2, c=3, d=5 
const object2 = Object.assign({c: 4, d: 5}, object1);
const object1 = { a: 1, b: 2, c: 3 }; 
// object2: a=1, b=2, c=3, d=5 
const object2 = Object.assign({c: 4, d: 5}, object1);
  • 方法三:
js
var arrnew = arrold.map(a => a.name);
console.log(arrnew) //仅由键值对的值构成的数组:[梁远东,谈畅,XXX]
var arrnew = arrold.map(a => a.name);
console.log(arrnew) //仅由键值对的值构成的数组:[梁远东,谈畅,XXX]