当前位置: 首页 > 知识库问答 >
问题:

如果数组中的项与另一项匹配而没有循环,则为该项分配新值

郑锋
2023-03-14

我需要将条件语句应用到对象项数组的每次迭代中,而不需要使用for循环或任何类型的涉及定义索引变量的循环。 这可以通过映射或过滤器实现吗?

下面是一个包含for循环的示例。

const objectArray = [{key: 1}, {key: 2}, {key: 3}, {key: 4}, {key: 5}] 
let currentKey = 3

for(i=0;i<objectArray.length;i++) {
    if(objectArray[i].key === currentKey) {
       objectArray[i].key = 0
       }
}
> console.log(objectArray)
[{key: 1}, {key: 2}, {key: 0}, {key: 4}, {key: 5}]

如果没有for循环,我如何才能实现这一点。

谢谢

共有3个答案

徐英锐
2023-03-14

您可以使用map函数。 这可以转换对象并返回它。

如果您不担心可能的内存调整或重新分配的对象值,可以使用:

const objectArray = [{key: 1}, {key: 2}, {key: 3}, {key: 4}, {key: 5}] 
const currentKey = 3
const result = objectArray.map((item)=>{
  if(item.key === currentKey)
    item.key = 0;
  return item;
});

console.log(result);
章涵容
2023-03-14

如果修改现有数组是可以的(即inplace),您可以简单地使用。find():

null

const objectArray = [{key: 1}, {key: 2}, {key: 3}, {key: 4}, {key: 5}]
let currentKey = 3


function replaceKey(arr, keyId, replacmentId) {
    const element = arr.find(element => element.key === keyId);
    if(element) {
        element.key = replacmentId;
    }
}

replaceKey(objectArray, currentKey, 0);
console.log(objectArray);
满玉泽
2023-03-14

mapfilter的组合将是一个优雅的解决方案:

null

const objectArray = [{key: 1}, {key: 2}, {key: 3}, {key: 4}, {key: 5}] 
let currentKey = 3

objectArray.filter((e) => e.key === currentKey).map((e) => e.key = 0);

console.log(objectArray)
 类似资料:
  • 问题内容: 在PostgreSQL中,我想根据某些条件选择一行,但是如果没有行与该条件匹配,则我想返回第一行。该表实际上包含一个序数列,因此该任务应该更容易(第一行是序数为0的那一行)。例如: 但是在这种情况下,无法保证匹配记录的顺序,因此我无法对其进行排序。使用单个语句执行此操作的方式是什么? 问题答案: 我想根据某些条件选择一行,但是如果没有行与该条件匹配,我想返回第一行 较短(正确) 你实际

  • 问题内容: 是否有任何Django函数可以让我从数据库中获取对象,如果没有匹配项,则为None? 现在我正在使用类似: 但这还不是很清楚,到处都是混乱的。 问题答案: 在Django 1.6中,你可以使用Queryset方法。它返回查询集匹配的第一个对象,如果没有匹配的对象,则返回None。 用法:

  • 我有一门食谱课: 用户可以在搜索框中输入搜索词列表,我想返回匹配所有搜索词的食谱。以下是我到目前为止的代码: 但是,这将返回仅与一个或两个条件匹配的项。例如。如果用户搜索“Chef Jane”和“Donald”,它还会返回来自“Chef Callum”的东西,因为“Donald”标签存在。 如何确保返回的是完全匹配的?

  • 我有两张桌子: Product\u表 Productbreak\u表 我的目标是只获取不在productbreak_table的和日期之间的产品 结果应该是:

  • 在发电机表中,我希望通过选择属性值与一组值匹配的所有项来查询。例如,我的表具有current_status属性,因此我希望所有具有“新”或“ASSIGNED”值的项。如果我对current_status属性应用GSI,看起来我必须在两个查询中执行此操作?或者进行扫描?

  • 问题内容: 我正在尝试匹配模式: 以下仅匹配第一次出现的情况: 结果是: 但是,[使用pythex似乎可以正常工作](http://pythex.org/?regex=%3C–(%5B%5Cw%5Cs%5D%2B)–%3E(%5B%5Cs%5CS%5D*%3F)(%3F%3D%5Cn%3C–%7C%24)&test_string=%3C–%20Option%201%20–%3E%0ANice%20

  • 问题内容: 我想要一个正则表达式从HTML页面提取标题。目前我有这个: 是否有一个正则表达式仅提取 的内容,所以我不必删除标签? 问题答案: 用在正则表达式和python中检索捕获的字符串(将返回如果没有找到结果,所以 不要用直接):

  • 在坚持最佳实践的同时,如何使用firestore进行一些关系查询,我面临着一点思维障碍。我正在创建一个feed功能,在这里你可以看到来自朋友的帖子。基本上,我的数据结构如下: 基本上,我正在进行一个查询,以获取friends_uid包含我的uid(本例中为uid1)的所有朋友。然后,一旦我将所有好友uid映射到一个数组,我想进行firestore查询,以获取Post_by字段等于该好友uid数组中