gpt4 book ai didi

javascript - 更新对象数组中的属性

转载 作者:行者123 更新时间:2023-12-01 15:39:59 25 4
gpt4 key购买 nike

有没有办法根据其他属性作为元素出现在其他数组中的次数来更新对象数组中的属性

我有 2 个数组,array1array2 :

var array1 = ["JOHN", "JACK", "JACK"];
var array2 = [
{count: 9, value: "JACK"},
{count: 9, value: "JOHN"},
{count: 2, value: "TEST"}
];

预期输出:
[
{count: 7, value: "JACK"}, // count = 9 - 2
{count: 8, value: "JOHN"}, // count = 9 - 1
{count: 2, value: "TEST"}
]

array1 ,“JACK”出现两次,所以我需要将计数减少 2,类似地,“JOHN”出现一次,因此减少 1,“TEST”没有出现,所以没有改变。

我尝试了以下
array1.map(item => {
return array2.find( p => p["value"] === item);
});

有了这个,我得到以下输出,
[
{count: 9, value: "JOHN"},
{count: 9, value: "JACK"},
{count: 9, value: "JACK"}
]

我不确定是否可以使用单个 lambda 表达式来实现。

提前致谢!

最佳答案

您可以使用数组 .map() 获得结果和 .filter() 方法,假设您不允许更改原始数组:

var array1  =  ["JOHN", "JACK", "JACK"];
var array2 = [{count: 9, value: "JACK"}, {count: 9, value: "JOHN"}, {count: 2, value: "TEST"}]

var result = array2.map(({value, count}) => ({value, count: count - array1.filter(a=>a===value).length}))
console.log(result)
.as-console-wrapper { max-height: 100% !important; top: 0; }


  • 使用 .filter()检查多少次value存在于 array1
  • 然后从当前 array2 中减去该结果数数。
  • 然后只需返回一个具有更新计数的新对象数组。
  • 关于javascript - 更新对象数组中的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61078385/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com