создать новый объект по значению в качестве ключа в javascript - PullRequest
0 голосов
/ 24 апреля 2020

Я хотел бы создать новый объект со значением в качестве ключа в javascript. У меня есть объект arrobj, как создать объект, имеющий ключ и значение же

function createobj(arrobj){
  var newobj = Object.assign({}, ...arrobj.map(e=>Object.values(e.fields)));
  return newobj
}

var arrobj = [{
  fields: {
   service: "finance",
   country: "SG"
  }
}]


Expected Output
var newobj = {
    finance: "finance",
    SG: "SG"
}

Ответы [ 3 ]

1 голос
/ 24 апреля 2020

Вы можете получить значения, а затем уменьшить их до одного объекта со значениями в качестве ключей:

function createobj(arrobj) {
  return arrobj
    .flatMap((e) => Object.values(e.fields))
    .reduce((p, c) => ((p = { ...p, [c]: c }), p), {});
}

var arrobj = [
  {
    fields: {
      service: "finance",
      country: "SG",
    },
  },
];

console.log(createobj(arrobj));
0 голосов
/ 24 апреля 2020

Это даст вам результат, который вы ищете:

function createobj(arrobj: any): any {
    var newObject = {};
    Object.values(arrobj[0].fields).forEach(v => {
        newObject[v] = v;
    });

    return newObject;
}
0 голосов
/ 24 апреля 2020

Я изменил вашу функцию отображения, поэтому значения объекта накапливаются для одного объекта, который затем возвращается:

function createobj(arrobj){
  var newobj = Object.assign({}, ...arrobj.map(e => {
    var acc = {};
    for (let value of Object.values(e.fields)) {
      acc[value] = value;
    }
    return acc;
  }));
  return newobj
}


// Test 1
var arrobj = [{
  fields: {
   service: "finance",
   country: "SG"
  }
}]
console.log("Test 1:", createobj(arrobj));

// Test 2
var arrobj2 = [{
  fields: {
   service: "finance",
   country: "SG"
  }
}, {
  fields: {
   service: "finance2",
   country: "SG2"
  }
}]

console.log("Test 2:", createobj(arrobj2));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...