javascript - 在 JavaScript 中获取数组中的数组对象
问题描述
我正在寻找一种增加数字的方法,因此我需要首先找到由 id 标识的对象。更具体地说,我想增加特定对象的投票。
数据结构如下所示:
const polls = [
{
id: "9efd91dc-b762-11e8-bfb8-c471feb11e42",
owner: "d926e95c-b696-11e8-8a0f-c471feb11e42",
question: "How are you? 1536849484",
tenement: "0cec2fc2-b697-11e8-8a0f-c471feb11e42",
participation: 0,
poll_answer_options: [
{
id: "9efd9b32-b762-11e8-bfb8-c471feb11e42",
owner: "d926e95c-b696-11e8-8a0f-c471feb11e42",
answer_text: "Not so Fine",
votes: 0
},
{
id: "9efd97b8-b762-11e8-bfb8-c471feb11e42",
owner: "d926e95c-b696-11e8-8a0f-c471feb11e42",
answer_text: "Fine",
votes: 0 // -> want to increment
}
]
},
{
id: "13b43584-b697-11e8-b2c2-c471feb11e42",
owner: "d926e95c-b696-11e8-8a0f-c471feb11e42",
question: "How are you? 1536762062",
tenement: "0cec2fc2-b697-11e8-8a0f-c471feb11e42",
participation: 1,
poll_answer_options: [
{
id: "13b43f66-b697-11e8-b2c2-c471feb11e42",
owner: "d926e95c-b696-11e8-8a0f-c471feb11e42",
answer_text: "Not so Fine",
votes: 1
},
{
id: "13b43bd8-b697-11e8-b2c2-c471feb11e42",
owner: "d926e95c-b696-11e8-8a0f-c471feb11e42",
answer_text: "Fine",
votes: 0
}
]
}
];
我尝试使用如下所示的 JavaScript find 方法,但这不起作用。
let pollAnswerOptions = polls.find(
poll => poll.poll_answer_options.id === "9efd97b8-b762-11e8-bfb8-c471feb11e42"
);
解决方案
你需要一个嵌套的方法,如果你只有一个id
可以找到,你可以使用短路来防止更多的迭代。
const
polls = [{ id: "9efd91dc-b762-11e8-bfb8-c471feb11e42", owner: "d926e95c-b696-11e8-8a0f-c471feb11e42", question: "How are you? 1536849484", tenement: "0cec2fc2-b697-11e8-8a0f-c471feb11e42", participation: 0, poll_answer_options: [{ id: "9efd9b32-b762-11e8-bfb8-c471feb11e42", owner: "d926e95c-b696-11e8-8a0f-c471feb11e42", answer_text: "Not so Fine", votes: 0 }, { id: "9efd97b8-b762-11e8-bfb8-c471feb11e42", owner: "d926e95c-b696-11e8-8a0f-c471feb11e42", answer_text: "Fine", votes: 0 }] }, { id: "13b43584-b697-11e8-b2c2-c471feb11e42", owner: "d926e95c-b696-11e8-8a0f-c471feb11e42", question: "How are you? 1536762062", tenement: "0cec2fc2-b697-11e8-8a0f-c471feb11e42", participation: 1, poll_answer_options: [{ id: "13b43f66-b697-11e8-b2c2-c471feb11e42", owner: "d926e95c-b696-11e8-8a0f-c471feb11e42", answer_text: "Not so Fine", votes: 1 }, { id: "13b43bd8-b697-11e8-b2c2-c471feb11e42", owner: "d926e95c-b696-11e8-8a0f-c471feb11e42", answer_text: "Fine", votes: 0 }] }],
id = '9efd97b8-b762-11e8-bfb8-c471feb11e42';
polls.some(o => o.poll_answer_options.some(option => {
if (option.id === id) {
++option.votes;
return true;
}
}));
console.log(polls);
.as-console-wrapper { max-height: 100% !important; top: 0; }
推荐阅读
- python-3.x - 如何知道切片的 xarray Dataset/DataArray 是否为空?
- php - 如何使用 input type=file 上传 json 文件
- javascript - 最小化 getElementById / getElementsByClassName 的代码
- mongodb - 不使用复杂聚合函数的“嵌套数组-数组子文档”查询过滤
- python-3.x - 将 Numpy 数组保存为 3 通道图像,同时保留分辨率
- javascript - Angular FormArrays 的问题:值更改、验证器和取消选中复选框
- python - 我如何判断一条路径是否像另一条路径?
- excel - 如果第一个 IF 为假,如何移动到数组中的下一个条目?
- angular - 在 Angular 6 中调整 div 的大小
- git - 如何防止git在用户主目录之外写入文件