JavaScript对象上的map - 获取对象键

3

我需要映射一个类似这样的对象

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

获取此类对象

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

我无法将“key”作为字符串获取。

我尝试过:

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

但是它生成了一个“数组”(而我需要一个对象){key : 5}...,而且用字符串“key”代替了键的名称。


1
这个回答解决了你的问题吗?对象的map函数(而不是数组) - Daan
6个回答

8

你可以使用.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)


6
你可以获取条目并将键和属性"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);


2

尝试以下代码:

在您的输入上使用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}

map returns a new array. Not fit for this case. A better alternative would be forEach - ABGR

2

尝试使用reduce而不是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)

1
你可以使用reduce函数来实现你的结果。
let result = Object.keys(obj).reduce((acc,k) => {
    return {
        ...acc,
        [k]:obj[k].value
    };
},{})
console.log(result); // {"a":5,"b":1,"c":6}

我希望它有所帮助。


1
使用for..of循环和解构值。
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);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接