- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我目前正在使用 for
和 findIndex
来更新主 result
变量中的总计。是否有其他方法可以将其重写为更短或更易读?
const payload = [
{ Id: 1, Total: 5 },
{ Id: 3, Total: 2 },
]
const result = {
Items: [
{ Id: 1, Name: 'Item 1 A', Total: 1, Type: "Main"},
{ Id: 1, Name: 'Item 1 B', Total: 0},
{ Id: 2, Name: 'Item 2 C', Total: 1, Type: "Main"},
{ Id: 2, Name: 'Item 2 D', Total: 0},
{ Id: 3, Name: 'Item 3 E', Type: "Main"},
{ Id: 3, Name: 'Item 3 F', Total: 0},
]
}
for(const itemPayload of payload) {
const itemIndex = result.Items.findIndex(item => item.Id === itemPayload.Id && item.Type === "Main");
if (itemIndex !== -1) {
result.Items[itemIndex].Total = itemPayload.Total;
}
}
console.log(result);
最佳答案
这里我们创建了一个Map
,然后循环访问它。它更清晰,更具可读性。
const payload = [
{ Id: 1, Total: 5 },
{ Id: 3, Total: 2 },
]
const result = {
Items: [
{ Id: 1, Name: 'Item 1 A', Total: 1, Type: "Main" },
{ Id: 1, Name: 'Item 1 B', Total: 0 },
{ Id: 2, Name: 'Item 2 C', Total: 1, Type: "Main" },
{ Id: 2, Name: 'Item 2 D', Total: 0 },
{ Id: 3, Name: 'Item 3 E', Type: "Main" },
{ Id: 3, Name: 'Item 3 F', Total: 0 },
]
};
const payloadMap = payload.reduce((map, obj) => {
map[obj.Id] = obj.Total;
return map;
}, {});
result.Items = result.Items.map(item => {
if (item.Type === 'Main' && payloadMap[item.Id]) {
item.Total = payloadMap[item.Id];
}
return item;
});
console.log(result);
关于javascript - for 和 findIndex 循环的替代选项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59020315/
我将对象的 id 作为 action.payload 传递给 reducer 以修改对象。 reducer : const initialState = { posts: [ {id:1,
我正在尝试在字符串中查找多行子字符串。 我的代码: data = `if (res) { new PNotify({
JavaScript findIndex 在重复值的情况下返回第一个找到的索引 const arr = [{a: 10, b: 20, c: 30},{a: 15, b: 25, c: 32},{a:
当我有一个字符串或对象数组时,如何使用 findIndex。以上代码均返回 -1 console.log(['kk', 'll', 'mm', 'pp'].findIndex(function(x)
我是 JavaScript 新手。 我正在尝试查找数组中特定元素的索引。我读到可以使用 findIndex 来循环数组。但 findIndex 似乎只接受三个参数:元素、索引和数组。如果我想更改用于比
如何在列表中搜索两个不同的东西? 例如,这段代码工作得很好: int index = mylistofobjects.FindIndex(a => a.firstname == "Bob"); 有什么
我有一个 json 数组: [ {"id":19,"name":"Jed", "lastname":"DIAZ", "hobby":"photo", "birthday":"2011/11/
var array = [{"one":1, "two":2},{"one":3, "two":4}]; var result = array.findIndex(functi
我有以下数据结构: const myData = [ { "trips": [ { "d
我有这个数组 let myArray = [1;2;3;5;2;7] 我想为 Seq.FindIndex(fun x -> x=2) myArray 获取数字 4,而不是 1我可以反转数组。但是我希望
我目前正在使用 for 和 findIndex 来更新主 result 变量中的总计。是否有其他方法可以将其重写为更短或更易读? const payload = [ { Id: 1,
这里我在 findIndex() 函数中遇到错误 未捕获( promise )TypeError:state.carts.findIndex 不是函数 cartId 有 rowId 和 qty 以
const jumbledNums = [123, 7, 25, 78, 5, 9]; const lessThanTen = jumbledNums.findIndex(num => { ret
我正在做我的学校作业,这只是一个基本的编程练习,但此刻我被卡住了。我试图尽可能简单优雅地解决所有问题,而我的同学只是使用了一堆 for 循环,我认为这很恶心。我也可以这样做,这对我来说不是挑战,但我认
我试图在包含多个对象的数组中查找对象的索引。我已经为此苦苦挣扎了一段时间,并将其简化为您所看到的,但仍然无法理解。请让我知道什么会起作用,以便我可以从 matchBetween("string1");
我想使用 ES6 的 findIndex() 方法返回最大的数字。我怎么做?在下面的这个例子中,我只想返回具有最高 ID 的索引。 let index = context.state.location
这个问题在这里已经有了答案: When should I use a return statement in ES6 arrow functions (6 个答案) 关闭 3 年前。 我找不到以下问
我正在学习教程并习惯 Javascript 中的 findIndexFunction,我们必须创建此函数。 function findIndex(arr, callback) { for (
我想在从零以外的元素开始的数组上使用 findIndex() 。我编写了以下代码,该代码对我有用,但是有更干净的解决方案吗? let desiredLastElementIndex = refundR
我有一个看起来像这样的对象: { userId: 111, notes: [ { name: 'Collection1', categories: [
我是一名优秀的程序员,十分优秀!