【问题标题】:javascript object keys and value if value match then storejavascript对象键和值如果值匹配则存储
【发布时间】:2019-09-26 09:33:50
【问题描述】:

我有一个对象,另一个是从查询中获取的对象 list1,但我想将 Obj 键值存储到数组中。

var Obj = { 
  '1': 'Test 1',
  '2': 'Test 2',
  '3': 'Test 3',
  '4': 'Test 4',
  '5': 'Test 5'
}

我从查询中获取数据,该查询是对象中 data2 键 1、2、3、4 和 5 中的索引值 query = '从测试中选择data1,data2,data3';

list1 = [{
      data1: 123,
      data2: 4,
      data3: 'value3',
}]

如果 data2 值,我想要一个对象输出。


list1 = [{
      data1: 123,
      data2: 'TEST 4',
      data3: 'value3',
}];


【问题讨论】:

  • 嗯。 list1 不是一个数组,它是一个对象(参见 data1: 123 其中 data1 是键,123 是值)。编辑:编辑后。 list1 现在既不是对象也不是数组。也许你会选择 ``` list1 = [ {data: 123}, {data: 4}, {data: 'value3'}, ] ``` 现在,list1 是一个对象数组。
  • 如果你有我的问题,请回答

标签: javascript arrays json object key-value


【解决方案1】:

您可以通过使用map 运算符转换对象数组并从Obj 对象中查找data2 属性来创建所需的结果

var Obj = {
  '1': 'Test 1',
  '2': 'Test 2',
  '3': 'Test 3',
  '4': 'Test 4',
  '5': 'Test 5'
}

list1 = [{
  data1: 123,
  data2: 4,
  data3: 'value3',
}]


var finalList = list1.map(obj => ({
  data1: obj.data1,
  data2: Obj[obj.data2],
  data3: obj.data3
}));

console.log(finalList)

【讨论】:

    【解决方案2】:

    下面正在做的是: 遍历list1 数组。由于它是一个对象数组,我们遍历对象并更新item[iter],如果Obj[item[iter]] 不是undefined

    list1.forEach( item => {
      for (iter in item) {
        item[iter] = Obj[item[iter]] !== undefined ? Obj[item[iter]] : item[iter]
      }
    })
    

    结果是

    [
      {
        "data1": 123,
        "data2": "Test 4",
        "data3": "value3"
      }
    ]
    

    希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 2017-11-26
      • 1970-01-01
      • 2015-04-25
      • 2017-08-23
      • 1970-01-01
      • 2016-08-28
      • 2021-11-07
      • 2022-12-17
      • 2020-07-19
      相关资源
      最近更新 更多