如何将单个键值对对象转换为具有键值对的对象数组?

我有一个键值对的单个对象,每个键都有一个数组作为值,如何通过将它与另一个对象数组进行比较,将其转换为具有键值对属性的对象数组。


var keys = [];


for (var k in obj) keys.push(k);

输入:


obj =  {

          "name": "jack",

          "age": 10,

          "country": "india",

          "state": "Delhi"

        }

        obj2 = [{key: "product", type:"", value:"", required:"true", mandatory:"true"},

        {key: "sub-product", type:"", value:"", required:"true", mandatory:"true"},

        {key: "name", type:"text", value:"", required:"true", mandatory:"true"},

        {key: "age", type:"text", value:"[0-9]", required:"true", mandatory:"true"},

        {key: "country", type:"text", value:"[a-z]", required:"true", mandatory:"true"},

        {key: "state", type:"text", value:"[a-z]", required:"true", mandatory:"true"}]

预期输出:


result = [{key: "name", type:"text", value:"", required:"true", mandatory:"true",setValue:"jack"},

        {key: "age", type:"text", value:"[0-9]", required:"true", mandatory:"true",setValue:"10"},

        {key: "country", type:"text", value:"[a-z]", required:"true", mandatory:"true",setValue:"india"},

        {key: "state", type:"text", value:"[a-z]", required:"true", mandatory:"true",setValue:"Delhi"}];


千万里不及你
浏览 217回答 3
3回答

ABOUTYOU

循环结束obj2。如果该key值是 的属性obj,则将相应的值复制到setValue对象的属性中,并将其压入结果。obj = {  "name": "jack",  "age": 10,  "country": "india",  "state": "Delhi"};obj2 = [{key: "product", type="", value="", required="true", mandatory="true"},        {key: "sub-product", type="", value="", required="true", mandatory="true"},        {key: "name", type="text", value="", required="true", mandatory="true"},        {key: "age", type="text", value="[0-9]", required="true", mandatory="true"},        {key: "country", type="text", value="[a-z]", required="true", mandatory="true"},        {key: "state", type="text", value="[a-z]", required="true", mandatory="true"}];var result = [];obj2.forEach(o => {  if (o.key in obj) {    o.setValue = obj[o.key];    result.push(o);  }});console.log(result);

LEATH

您可以先使用过滤它hasOwnProperty,然后将其映射到设置setValue属性。这是实现:var obj = { "name": "jack", "age": 10, "country": "india", "state": "Delhi" };var obj2 =[{key: "product", type:"", value:"", required:"true", mandatory:"true"}, {key: "sub-product", type:"", value:"", required:"true", mandatory:"true"}, {key: "name", type:"text", value:"", required:"true", mandatory:"true"}, {key: "age", type:"text", value:"[0-9]", required:"true", mandatory:"true"}, {key: "country", type:"text", value:"[a-z]", required:"true", mandatory:"true"}, {key: "state", type:"text", value:"[a-z]", required:"true", mandatory:"true"}];var result = obj2.filter(k=>obj.hasOwnProperty(k.key)).map(p=>({...p, setValue:obj[p.key]}));console.log(result);

撒科打诨

你可以使用Array.prototype.flatmap来实现这个const obj = {  "name": "jack",  "age": 10,  "country": "india",  "state": "Delhi"}const obj2 = [  {key: "product", type:"", value:"", required:"true", mandatory:"true"},  {key: "sub-product", type:"", value:"", required:"true", mandatory:"true"},  {key: "name", type:"text", value:"", required:"true", mandatory:"true"},  {key: "age", type:"text", value:"[0-9]", required:"true", mandatory:"true"},  {key: "country", type:"text", value:"[a-z]", required:"true", mandatory:"true"},  {key: "state", type:"text", value:"[a-z]", required:"true", mandatory:"true"}]const result = obj2.flatMap((entry) => {  if (obj[entry.key]) {    return {      ...entry,            setValue: obj[entry.key],    }  }    return []})console.log(result)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript