gpt4 book ai didi

javascript - 对对象数组进行排序并从对象返回特定值的数组

转载 作者:行者123 更新时间:2023-11-30 11:17:31 26 4
gpt4 key购买 nike

我有一个对象数组(产品列表),我正在为其实现排序逻辑。为了让它成为单一的真实来源,我制作了一个 id-product 映射,看起来像这样:

const prodsMap = {
1 : {
id : 1,
name : 'abc',
price : 4
},
2 : {
id : 2,
name : 'aac',
price : 3
}
}

现在为了对产品进行分类,我正在这样做:

function sortString(data, propName) {
return data.sort((obj1, obj2) => {
const val1 = obj1[propName]
const val2 = obj2[propName]

if (val1 < val2) {
return -1
}

if (val1 > val2) {
return 1
}

return 0
})
}

像这样调用函数:

const prods = sortString(Object.values(prodsMap), 'name')

这里一切正常,排序的结果将是一个对象数组,为了获取 id,我正在使用 map 函数。

现在的问题是我必须迭代三次(第一次获取对象值,第二次排序,第三次映射 ID),我想知道是否有更好的方法在数组排序时只获取 ID .

最佳答案

您可以对移交对象的键进行排序,以获得一个id数组。

如果您需要对象的 ìd 属性,您可以使用 id 属性映射外部对象的值。

const prodsMap = {
1 : {
id : 1,
name : 'abc',
price : 4
},
2 : {
id : 2,
name : 'aac',
price : 3
}
}

function sortString(data, propName) {
return Object.keys(data).sort((a, b) => {
const val1 = data[a][propName];
const val2 = data[b][propName];

if (val1 < val2) {
return -1;
}

if (val1 > val2) {
return 1;
}

return 0;
});
}

const prods = sortString(prodsMap, 'name');

console.log(prods);

关于javascript - 对对象数组进行排序并从对象返回特定值的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51017781/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com