在对象数组上迭代后无法获得单个值
Can't get single value after iteration on array of objects
我使用此代码迭代 JavaScript 对象数组和 return 值:
this.selectedClient = _.forEach(self.clients, function (client) {
if (client.IdentityNumber == -1) {
return client;
}
})
this.clients=[{firstName:"Tywin", lastName:"Lannister", age:46, IdentityNumber:2},
{firstName:"Arya", lastName:"Starck", age:46, IdentityNumber:-1},
{firstName:"John", lastName:"Snow", age:46, IdentityNumber:12},
{firstName:"Robb", lastName:"Starck", age:46, IdentityNumber:24}];
但在迭代完成后,我希望 selectedClient
veriable 将获得单个项目:
{firstName:"Arya", lastName:"Starck", age:46, IdentityNumber:-1}
而是 selectedClient
veriable 获取 clients 变量中的所有项目。
知道为什么在 clients
变量上迭代后我无法获得单个值吗?
您不能 return
来自 forEach
的数据。
从 forEach
的 Lodash 文档中复制
Iteratee functions may exit iteration early by explicitly returning false.
使用_.find()
.
var selectedClient = _.find(clients, function (client) {
if (client.IdentityNumber == -1) {
return client;
}
});
您还可以使用更短的语法,将 Object 作为第二个参数。
_.find(clients, {IdentityNumber: -1});
var clients = [{
firstName: "Tywin",
lastName: "Lannister",
age: 46,
IdentityNumber: 2
}, {
firstName: "Arya",
lastName: "Starck",
age: 46,
IdentityNumber: -1
}, {
firstName: "John",
lastName: "Snow",
age: 46,
IdentityNumber: 12
}, {
firstName: "Robb",
lastName: "Starck",
age: 46,
IdentityNumber: 24
}];
var selectedClient = _.find(clients, {IdentityNumber: -1});
console.log(selectedClient);
<script src="https://cdn.jsdelivr.net/lodash/4.13.1/lodash.min.js"></script>
对于原版爱好者,请使用 Array#find
clients.find(c => c.IdentityNumber === -1)
var clients = [{
firstName: "Tywin",
lastName: "Lannister",
age: 46,
IdentityNumber: 2
}, {
firstName: "Arya",
lastName: "Starck",
age: 46,
IdentityNumber: -1
}, {
firstName: "Robb",
lastName: "Starck",
age: 46,
IdentityNumber: 24
}];
var selectedClient = clients.find(c => c.IdentityNumber === -1);
console.log(selectedClient);
我使用此代码迭代 JavaScript 对象数组和 return 值:
this.selectedClient = _.forEach(self.clients, function (client) {
if (client.IdentityNumber == -1) {
return client;
}
})
this.clients=[{firstName:"Tywin", lastName:"Lannister", age:46, IdentityNumber:2},
{firstName:"Arya", lastName:"Starck", age:46, IdentityNumber:-1},
{firstName:"John", lastName:"Snow", age:46, IdentityNumber:12},
{firstName:"Robb", lastName:"Starck", age:46, IdentityNumber:24}];
但在迭代完成后,我希望 selectedClient
veriable 将获得单个项目:
{firstName:"Arya", lastName:"Starck", age:46, IdentityNumber:-1}
而是 selectedClient
veriable 获取 clients 变量中的所有项目。
知道为什么在 clients
变量上迭代后我无法获得单个值吗?
您不能 return
来自 forEach
的数据。
从 forEach
Iteratee functions may exit iteration early by explicitly returning false.
使用_.find()
.
var selectedClient = _.find(clients, function (client) {
if (client.IdentityNumber == -1) {
return client;
}
});
您还可以使用更短的语法,将 Object 作为第二个参数。
_.find(clients, {IdentityNumber: -1});
var clients = [{
firstName: "Tywin",
lastName: "Lannister",
age: 46,
IdentityNumber: 2
}, {
firstName: "Arya",
lastName: "Starck",
age: 46,
IdentityNumber: -1
}, {
firstName: "John",
lastName: "Snow",
age: 46,
IdentityNumber: 12
}, {
firstName: "Robb",
lastName: "Starck",
age: 46,
IdentityNumber: 24
}];
var selectedClient = _.find(clients, {IdentityNumber: -1});
console.log(selectedClient);
<script src="https://cdn.jsdelivr.net/lodash/4.13.1/lodash.min.js"></script>
对于原版爱好者,请使用 Array#find
clients.find(c => c.IdentityNumber === -1)
var clients = [{
firstName: "Tywin",
lastName: "Lannister",
age: 46,
IdentityNumber: 2
}, {
firstName: "Arya",
lastName: "Starck",
age: 46,
IdentityNumber: -1
}, {
firstName: "Robb",
lastName: "Starck",
age: 46,
IdentityNumber: 24
}];
var selectedClient = clients.find(c => c.IdentityNumber === -1);
console.log(selectedClient);