如何在Javascript中将对象的字段名称转换为值

时间:2019-10-03 12:54:27

标签: javascript ecmascript-6 javascript-objects

我正在尝试以最简单的方式将{fieldName: "value"}之类的对象转换为{field: "fieldName", value: "value"}之类的另一对象,而不事先知道fieldName是什么。

我已经看过How to convert string as object's field name in javascript的答案,但是尽管这可行,但它依赖于fieldName已经已知的事实。以下作品:

const key = Object.keys(searchObject)[0];
  return { field: key, value: searchObject[key] }

但是它看起来笨拙,笨拙且容易出错。我想要的是

const obj = { field: [searchObject.key], ... }

但这仅在[searchObject.key]searchObject.key的情况下起作用。

1 个答案:

答案 0 :(得分:1)

遍历对象中的每个属性,并创建另一个具有键和值作为单独属性的属性,然后将其推入新数组并返回。

示例:

var test_data = {fieldName: "name", fieldName2: "name2"}

function convert(data){
  var result = []
  for(var k in data){
    result.push({
      field: k,
      value: data[k]
    })
  }
  return result
}

console.log(convert(test_data))

// ------ ES6 ---------- //

console.log(
  Object.keys(test_data).map(a=>({field: a, value: test_data[a]}))
)