如何解决如何从多个数组中获取值
我正在尝试在 cypress 中编写测试,我已连接到数据库并创建了一个 selectQuery 以从数据库中选择 marketIds。现在这些值显示在下面,我能够获得第一个数组的值,但不能获得第二个或第三个数组的值。
下面的示例数组
{id: 1,name: apple},{id: 2,name: pear},{id: 3,name: kiwi}
before(() => {
cy.task('queryDb',selectMarketQuery).then(function (marketId) {
const market = marketId;
const values = Object.values(market[0]);
const keys = Object.keys(market[0]);
let result = {};
let index = 0;
keys.forEach(() => {
result[keys[index]] = values[index];
index++;
});
cy.log(result.name);
});
});
解决方法
假设 marketId
是您列出的三个对象的数组,那么您只需要一个 map()
调用即可返回一个仅包含 name
属性的新数组。
const names = marketId.map(({ name }) => name);
(此处使用 destructuring assignment 访问 name
回调传递的参数中的 map()
属性)
const marketId = [
{ id: 1,name: 'apple' },{ id: 2,name: 'pear' },{ id: 3,name: 'kiwi' }
];
const names = marketId.map(({ name }) => name);
console.log(names);
但看起来您实际上希望返回一个具有按键分组的属性的对象。即:
const result = {
id: [1,2,3],name: ['apple','pear','kiwi']
}
在这种情况下,您可以使用 reduce()
调用遍历数组,然后遍历每个对象的 Object.entries()
以在累加器中按 key
对它们进行分组。
const marketId = [
{ id: 1,name: 'kiwi' }
];
const result = marketId.reduce((acc,product) => {
Object.keys(product).forEach(key =>
(acc[key] = acc[key] || []).push(product[key]));
return acc;
},{})
console.log(result);
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。