首页 > 解决方案 > 如何在动态生成的对象字符串值上添加过滤器

问题描述

我是编码新手,我有一个动态生成的对象数据,如下所示:

data: {
    1-leadTimeNormal: 10
    3-leadTimeNormal: 22
    2-leadTimeNormal: 10
    2-leadTimeOptimal: 2
    3-leadTimeOptimal: 22
    1-leadTimeOptimal: 7
}

其中,左侧的整数值(1、3、2 等)是动态生成的。现在,我想设置一个条件来检查 1-leadTimeNormal 是否小于 1-leadTimeOptimal(使用 if Else)和 2-leadTimeNormal 是否小于 2-leadTimeOptimal 等等,并使用在控制台日志中返回一些字符串javascript

标签: javascriptnode.js

解决方案


您可以遍历从 1 到键数/2 的每个值

data = {
	'1-leadTimeNormal': 10,
	'3-leadTimeNormal': 22,
	'2-leadTimeNormal': 10,
	'2-leadTimeOptimal': 2,
	'3-leadTimeOptimal': 22,
	'1-leadTimeOptimal': 7
}
let arr = Object.keys(data)

for(let i=1; i<=arr.length/2; i++) {
	if(data[`${i}-leadTimeNormal`] < data[`${i}-leadTimeOptimal`]) {
		console.log('hello world')
	} else {
		console.log('bye world')
	}
}
如果您不知道附加的数字,您可以将它们过滤掉
data = {
	'1-leadTimeNormal': 10,
	'3-leadTimeNormal': 22,
	'2-leadTimeNormal': 10,
	'2-leadTimeOptimal': 2,
	'3-leadTimeOptimal': 22,
	'1-leadTimeOptimal': 7
}
let keys = Object.keys(data).filter(key => key.includes('leadTimeNormal'))

keys.forEach(key => {
	let num = key.replace(/^([0-9]+)-.*/, '$1')
	if (data[key] < data[`${num}-leadTimeOptimal`]) {
		console.log('hello world')
	} else {
		console.log('bye world')
	}
});


推荐阅读