比较键并获得最整洁的最小键及其在 JavaScript 对象数组中的值
Compare key and get neatest min key and it's value in JavaScript array of object
我有这样的 JS 对象
{
"100": {.. data },
"200": {.. data },
"500": {.. data },
"1000": {.. data }
/* so on */
}
如何使用任意数字搜索关键字,例如
- 如果搜索数字在 0 到 99 之间,那么它会 return false,
- 如果搜索号码在 100 到 199 之间,那么它将 return 键 100 及其值
- if 500 to 999 then return 键 500 及其值
- 如果 1000+ 则键入 1000 及其值
这是我的代码
function find(num, obj)
{
let keys = Object.keys(obj);
result = keys.concat(Number.MAX_SAFE_INTEGER).filter(key => {
return num <= key;
}).shift();
if(result === Number.MAX_SAFE_INTEGER) {
result = keys.pop();
}
return result;
}
console.log( find(125, data) )
这是 return200 而不是 100
这里一个简单的方法是按降序对键进行排序,
然后找到目标比它大的第一个键。
function findNearestMinObj(obj, target) {
const sortedKeys = Object.keys(obj).map(d => Number(d)).sort((a, b) => b - a)
const key = sortedKeys.find(k => target >= k)
if (key === undefined) return false
return {
key,
value: obj[key]
}
}
const data = {
100: "one hundred",
200: "two hundred",
300: "three hundred",
400: "four hundred",
500: "five hundred",
1000: "one thousand",
}
console.log(`123: ${JSON.stringify(findNearestMinObj(data, 123))}`)
console.log(`456: ${JSON.stringify(findNearestMinObj(data, 456))}`)
console.log(`1234: ${JSON.stringify(findNearestMinObj(data, 1234))}`)
console.log(`99: ${JSON.stringify(findNearestMinObj(data, 99))}`)
console.log(`0: ${JSON.stringify(findNearestMinObj(data, 0))}`)
我有这样的 JS 对象
{
"100": {.. data },
"200": {.. data },
"500": {.. data },
"1000": {.. data }
/* so on */
}
如何使用任意数字搜索关键字,例如
- 如果搜索数字在 0 到 99 之间,那么它会 return false,
- 如果搜索号码在 100 到 199 之间,那么它将 return 键 100 及其值
- if 500 to 999 then return 键 500 及其值
- 如果 1000+ 则键入 1000 及其值
这是我的代码
function find(num, obj)
{
let keys = Object.keys(obj);
result = keys.concat(Number.MAX_SAFE_INTEGER).filter(key => {
return num <= key;
}).shift();
if(result === Number.MAX_SAFE_INTEGER) {
result = keys.pop();
}
return result;
}
console.log( find(125, data) )
这是 return200 而不是 100
这里一个简单的方法是按降序对键进行排序, 然后找到目标比它大的第一个键。
function findNearestMinObj(obj, target) {
const sortedKeys = Object.keys(obj).map(d => Number(d)).sort((a, b) => b - a)
const key = sortedKeys.find(k => target >= k)
if (key === undefined) return false
return {
key,
value: obj[key]
}
}
const data = {
100: "one hundred",
200: "two hundred",
300: "three hundred",
400: "four hundred",
500: "five hundred",
1000: "one thousand",
}
console.log(`123: ${JSON.stringify(findNearestMinObj(data, 123))}`)
console.log(`456: ${JSON.stringify(findNearestMinObj(data, 456))}`)
console.log(`1234: ${JSON.stringify(findNearestMinObj(data, 1234))}`)
console.log(`99: ${JSON.stringify(findNearestMinObj(data, 99))}`)
console.log(`0: ${JSON.stringify(findNearestMinObj(data, 0))}`)