map on javascript object - получить ключи объекта - PullRequest
0 голосов
/ 16 июня 2020

Мне нужно сопоставить такой объект, как этот

let obj = { 
    a : { value : 5, meta: "sss" },
    b : { value : 1, meta: "rrr" },
    a : { value : 6, meta: "nnn" },
}`

, чтобы получить, и такой объект

{ a: 5, b: 1, c:6}

Я не могу получить «ключ» в виде строки.

Я пробовал:

let yyy = Object.keys(obj).map(function (key) {
    return { key: obj[key].value };
});

Но он выдает «Массив» (в то время как мне нужен объект) {key : 5}... со строкой «ключ» вместо имени ключа.

Ответы [ 6 ]

1 голос
/ 16 июня 2020

Попробуйте следующее:

Используйте Object.keys для ввода.

let obj = { 'a': {value: 5, meta: "sss"},
            'b': {value: 1, meta: "rrr"},
            'c': {value: 6, meta: "nnn"},
          };

let output = {};
Object.keys(obj).map(function (item) {
    output[item] = obj[item]['value']
});
console.log(output)


Output : { a: 5, b: 1, c:6}
1 голос
/ 16 июня 2020

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

let object = { a : { value: 5, meta: "sss" }, b : { value: 1, meta: "rrr" }, c : { value: 6, meta: "nnn" } },
    result = Object.fromEntries(Object
        .entries(object)
        .map(([key, { value }]) => [key, value])
    );

console.log(result);
0 голосов
/ 20 июня 2020

Использование for..of l oop и деструктуризация значений

let obj = { 
    a : { value : 5, meta: "sss" },
    b : { value : 1, meta: "rrr" },
    c : { value : 6, meta: "nnn" },
}
const data = Object.entries(obj);
let result={};
for(let [key, {value}] of data) {
  result[key] = value;
}
console.log(result);
0 голосов
/ 16 июня 2020

Для достижения результата вы можете использовать функцию reduce.

let result = Object.keys(obj).reduce((acc,k) => {
    return {
        ...acc,
        [k]:obj[k].value
    };
},{})
console.log(result); // {"a":5,"b":1,"c":6}

Надеюсь, это поможет.

0 голосов
/ 16 июня 2020

Попробуйте использовать сокращение вместо map ..

const obj = { 
    a : { value : 5, meta: "sss" },
    b : { value : 1, meta: "rrr" },
    c : { value : 6, meta: "nnn" },
}


const res = Object.keys(obj).reduce( (res, key) => {
  res[key] = obj[key].value
  return res;
}, {});

console.log(res)
0 голосов
/ 16 июня 2020

Вы можете использовать .reduce

let obj = { 
    a : { value : 5, meta: "sss" },
    b : { value : 1, meta: "rrr" },
    c : { value : 6, meta: "nnn" },
}

var res = Object.keys(obj).reduce((acc, elem)=>{
  acc[elem] = obj[elem].value;
  return acc;
},{});

console.log(res)
...