我正在创建一个具有动态键的对象,如下所示:
const myObject = [
{PINO: 1764},
{FANH: 2737},
{WQTR: 1268},
{CICO: 1228}
];
我想用最低的值得到键和值,在本例中是{CICO: 1228}
。
我创建这个对象的方式如下:
let basic = [];
_.map(values, value => {
let result = value[Object.keys(value)].reduce((c, v) => {
// sum up the amounts per key
c[Object.keys(value)] = (c[Object.keys(value)] || 0) + parseInt(v.amount);
return c;
}, {});
basic.push(result);
})
console.log(basic) => [{PINO: 1764}, {FANH: 2737}, {WQTR: 1268}, {CICO: 1228}]
如何从basic
对象中获得它的键的最低数字?我试着使用排序并取最低的数字,但是键是动态创建的,所以我认为我没有任何可以对其进行排序的东西。
发布于 2018-12-20 22:12:05
使用Array.reduce()
迭代数组,通过Object.values()
获取对象的值,并取数字较低的对象:
const myObject = [
{PINO: 1764},
{FANH: 2737},
{WQTR: 1268},
{CICO: 1228}
];
const result = myObject.reduce((r, o) =>
Object.values(o)[0] < Object.values(r)[0] ? o : r
);
console.log(result);
发布于 2018-12-20 22:12:14
这是存储数据的一种非常不方便的方法,因为键或多或少是无用的,您需要查看每个对象的值才能执行任何操作。但是,如果你需要这样做的话,你可以这样做:
const myObject = [
{PINO: 1764},
{FANH: 2737},
{WQTR: 1268},
{CICO: 1228}
];
let least = myObject.reduce((least, current) => Object.values(least)[0] < Object.values(current)[0] ? least : current)
console.log(least)
如果它是一个大列表,则可以将数组转换为不同的格式,这样就不需要继续创建Object.values
数组了。
https://stackoverflow.com/questions/53876679
复制相似问题