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

将对象拆分为两个并重新计算关键点

许嘉福
2023-03-14

我想根据属性“amount”(空字符串)将对象分成两部分

let myObj = {
"1": {
    "resources": "hotel",
    "amount": "",
    "currency": ""
},
"2": {
    "resources": null,
    "amount": "300.00",
    "currency": "CZK"
},
"3": {
    "resources": null,
    "amount": "500.00",
    "currency": "USD"
},

}

对此

obj1 = {
"1": {
    "resources": "hotel",
    "amount": "",
    "currency": ""
}}
obj2 = {
"1": {
    "resources": null,
    "amount": "300.00",
    "currency": "CZK"
},
"2": {
    "resources": null,
    "amount": "500.00",
    "currency": "USD"
}}

我即将解决它,但经过多次尝试(推送、分配、映射),它仍然不起作用。谢谢。

共有2个答案

段干博明
2023-03-14

这是我想到的最简单、可读性最强的解决方案,但也可以使用mapper和reducer来生成更清晰的代码。

const obj = {
    "1": {
        "resources": "hotel",
        "amount": "",
        "currency": ""
    },
    "2": {
        "resources": null,
        "amount": "300.00",
        "currency": "CZK"
    },
    "3": {
        "resources": null,
        "amount": "500.00",
        "currency": "USD"
    }
}

const emptyAmountObjs = {};
const filledAmountObjs = {};

for(indexKey in obj) {
  const data = obj[indexKey];
  if(data['amount'] != '') {
    filledAmountObjs[indexKey] = data;
  } else {
    emptyAmountObjs[indexKey] = data;
  }
}

console.log({filledAmountObjs, emptyAmountObjs});
尹俊贤
2023-03-14

你可以这样实现你的目标:

let myObj = {
  "1": {
    "resources": "hotel",
    "amount": "",
    "currency": ""
  },
  "2": {
    "resources": null,
    "amount": "300.00",
    "currency": "CZK"
  },
  "3": {
    "resources": null,
    "amount": "500.00",
    "currency": "USD"
  },
}

const withAmount = {},
  withoutAmount = {};

Object.keys(myObj).forEach(key => {
  const item = myObj[key];
  if (item.amount) {
    withAmount[key] = item;
  } else {
    withoutAmount[key] = item
  }
})

console.log('withAmount:',withAmount)
console.log('withoutAmount:',withoutAmount)
 类似资料:
  • 我有一个Akka Streams,我想根据谓词将其分成两个源。 例如。有一个源(类型被有意简化): 还有两种方法: 我希望能够拆分根据谓词,并将右侧部分传递给方法,左侧部分传递给方法。 我尝试使用拆分器,但它需要s结尾。

  • 问题内容: 我有一个像这样的字符串: 现在指示键值对,而将其分开。我想将键值对添加到地图。 我可以使用以下方法实现此目的: 但是,有一种有效的方法吗? 我觉得代码效率低下,因为我使用了2个对象并两次调用了该函数。另外,我正在使用,如果没有值,可能会引发。 问题答案: 您可以使用以下代码对split()进行一次调用,并对String进行一次传递。但是,它当然首先假定字符串有效: 上面的代码 可能 比

  • 我是一个新手Android和工作在一个电子商务应用程序。我有一个产品的模型类(指定产品名称,价格等)。 我想显示从数组列表到列表视图的产品。但是,如果有相同的产品(具有相同的productId)在数组列表中两次,我希望它显示在列表视图中,只有一行,数量-2(请参见图片)。有人能帮我吗? 下面是listview适配器类: 编辑: 请注意,我不能使用HashSet(用于创建唯一列表)或HashMap(

  • 我有一个新手火花问题。下面是我试图执行的程序: 我试图做的计算(doComput)是昂贵的,因为内存限制,我决定将数据集重新分区为7000个分区(即使我有1200个执行器,所以一次只能执行1200个)。然而,在完成计算后,我尝试写入s3,它大部分工作正常,但很少有任务最终超时,工作被重试。 1) 为什么在我保存在进行昂贵计算后生成的RDD时,整个作业都会被重试? 2) 我试图在持久化之后合并,但s

  • 问题内容: 我有一个表字段,其中包含用户的姓氏和名字。是否有可能分裂成那些2场,? 所有记录的格式均为“名字的姓氏”(不带引号,中间还有空格)。 问题答案: 不幸的是,MySQL没有分割字符串功能。但是,您可以为此创建一个用户定义的函数,例如以下文章中描述的函数: Federico Cargnelutti撰写的MySQL Split String Function 使用该功能: 您将可以按照以下方

  • 问题内容: 我可以使用通用的特定于Javascript / Coffeescript的习惯用法吗?主要出于好奇。 我有两个数组,一个数组由所需的键组成,另一个数组由所需的值组成,我想将其合并到一个对象中。 问题答案: var r = {}, i, keys = [‘one’, ‘two’, ‘three’], values = [‘a’, ‘b’, ‘c’];