如何在动态生成的对象字符串值上添加过滤器

huangapple go评论112阅读模式
英文:

How to add filter on a dynamically generated object strings values

问题

Sure, here's the translated code part:

  1. 我刚开始学编程我有一个动态生成的对象数据如下
  2. data: {
  3. 1-leadTimeNormal: 10
  4. 3-leadTimeNormal: 22
  5. 2-leadTimeNormal: 10
  6. 2-leadTimeOptimal: 2
  7. 3-leadTimeOptimal: 22
  8. 1-leadTimeOptimal: 7
  9. }
  10. 其中左侧的整数值132是动态生成的
  11. 现在我想要添加一个条件来检查1-leadTimeNormal是否小于1-leadTimeOptimal使用if Else),以及2-leadTimeNormal是否小于2-leadTimeOptimal等等并在控制台中使用JavaScript返回一些字符串

I've translated the code portion for you.

英文:

I am new to coding, and I have a dynamically generated Object data as this:

  1. data: {
  2. 1-leadTimeNormal: 10
  3. 3-leadTimeNormal: 22
  4. 2-leadTimeNormal: 10
  5. 2-leadTimeOptimal: 2
  6. 3-leadTimeOptimal: 22
  7. 1-leadTimeOptimal: 7
  8. }

Where, the integer value on the left hand side(1,3,2, etc) is getting generated dynamically.
Now, I want to put a condition to check whether 1-leadTimeNormal is less than 1-leadTimeOptimal or not (using if Else) and 2-leadTimeNormal is less than 2-leadTimeOptimal or not and so on and return some string in console log using javascript

答案1

得分: 1

你可以循环遍历从1到键的数量除以2的每个值。

  1. data = {
  2. '1-leadTimeNormal': 10,
  3. '3-leadTimeNormal': 22,
  4. '2-leadTimeNormal': 10,
  5. '2-leadTimeOptimal': 2,
  6. '3-leadTimeOptimal': 22,
  7. '1-leadTimeOptimal': 7
  8. }
  9. let arr = Object.keys(data)
  10. for(let i=1; i<=arr.length/2; i++) {
  11. if(data[`${i}-leadTimeNormal`] < data[`${i}-leadTimeOptimal`]) {
  12. console.log('hello world')
  13. } else {
  14. console.log('bye world')
  15. }
  16. }

如果你不知道附加的数字,你可以将它们过滤掉。

  1. data = {
  2. '1-leadTimeNormal': 10,
  3. '3-leadTimeNormal': 22,
  4. '2-leadTimeNormal': 10,
  5. '2-leadTimeOptimal': 2,
  6. '3-leadTimeOptimal': 22,
  7. '1-leadTimeOptimal': 7
  8. }
  9. let keys = Object.keys(data).filter(key => key.includes('leadTimeNormal'))
  10. keys.forEach(key => {
  11. let num = key.replace(/^([0-9]+)-.*/, '$1')
  12. if (data[key] < data[`${num}-leadTimeOptimal`]) {
  13. console.log('hello world')
  14. } else {
  15. console.log('bye world')
  16. }
  17. });
英文:

You can loop through each value from 1 to number of keys/2

<!-- begin snippet: js hide: false console: true babel: false -->

<!-- language: lang-js -->

  1. data = {
  2. &#39;1-leadTimeNormal&#39;: 10,
  3. &#39;3-leadTimeNormal&#39;: 22,
  4. &#39;2-leadTimeNormal&#39;: 10,
  5. &#39;2-leadTimeOptimal&#39;: 2,
  6. &#39;3-leadTimeOptimal&#39;: 22,
  7. &#39;1-leadTimeOptimal&#39;: 7
  8. }
  9. let arr = Object.keys(data)
  10. for(let i=1; i&lt;=arr.length/2; i++) {
  11. if(data[`${i}-leadTimeNormal`] &lt; data[`${i}-leadTimeOptimal`]) {
  12. console.log(&#39;hello world&#39;)
  13. } else {
  14. console.log(&#39;bye world&#39;)
  15. }
  16. }

<!-- end snippet -->
If you dont know the appended numbers, you can filter them out
<!-- begin snippet: js hide: false console: true babel: false -->

<!-- language: lang-js -->

  1. data = {
  2. &#39;1-leadTimeNormal&#39;: 10,
  3. &#39;3-leadTimeNormal&#39;: 22,
  4. &#39;2-leadTimeNormal&#39;: 10,
  5. &#39;2-leadTimeOptimal&#39;: 2,
  6. &#39;3-leadTimeOptimal&#39;: 22,
  7. &#39;1-leadTimeOptimal&#39;: 7
  8. }
  9. let keys = Object.keys(data).filter(key =&gt; key.includes(&#39;leadTimeNormal&#39;))
  10. keys.forEach(key =&gt; {
  11. let num = key.replace(/^([0-9]+)-.*/, &#39;$1&#39;)
  12. if (data[key] &lt; data[`${num}-leadTimeOptimal`]) {
  13. console.log(&#39;hello world&#39;)
  14. } else {
  15. console.log(&#39;bye world&#39;)
  16. }
  17. });

<!-- end snippet -->

答案2

得分: 0

You can use 模板文字 字符串作为访问您的 data 值的键

  1. const n = 1 // 可以是数字或字符串
  2. if (data[`${n}-leadTimeNormal`] &gt; data[`${n}-leadTimeOptimal`]) {
  3. // ....
  4. }
英文:

You can use template literal string as key to access your data value

  1. const n = 1 // may be a number or string
  2. if (data[`${n}-leadTimeNormal`] &gt; data[`${n}-leadTimeOptimal`]) {
  3. // ....
  4. }

答案3

得分: 0

  1. let data = {
  2. "1-leadTimeNormal": 10,
  3. "3-leadTimeNormal": 22,
  4. "4-leadTimeNormal": 22,
  5. "4-leadTimeOptimal": 42,
  6. "3-leadTimeOptimal": 22,
  7. "1-leadTimeOptimal": 7,
  8. "otherRandomKey": "Hello, World!"
  9. }
  10. // iterate over keys
  11. for (let key in data) {
  12. // ensure key is in the form "x-leadTimeNormal"
  13. if (key.match(/\d+-.+Normal/)) {
  14. // get the number part
  15. let number = key.substring(0, key.indexOf("-"))
  16. // test inferiority
  17. if (data[number + "-leadTimeNormal"] < data[number + "-leadTimeOptimal"]) {
  18. console.log("log here for number " + number)
  19. }
  20. }
  21. }
英文:

<!-- begin snippet: js hide: false console: true babel: false -->

<!-- language: lang-js -->

  1. let data = {
  2. &quot;1-leadTimeNormal&quot;: 10,
  3. &quot;3-leadTimeNormal&quot;: 22,
  4. &quot;4-leadTimeNormal&quot;: 22,
  5. &quot;4-leadTimeOptimal&quot;: 42,
  6. &quot;3-leadTimeOptimal&quot;: 22,
  7. &quot;1-leadTimeOptimal&quot;: 7,
  8. &quot;otherRandomKey&quot;: &quot;Hello, World!&quot;
  9. }
  10. // iterate over keys
  11. for (let key in data) {
  12. // ensure key is in the form &quot;x-leadTimeNormal&quot;
  13. if (key.match(/\d+-.+Normal/)) {
  14. // get the number part
  15. let number = key.substring(0, key.indexOf(&quot;-&quot;))
  16. // test inferiority
  17. if (data[number + &quot;-leadTimeNormal&quot;] &lt; data[number + &quot;-leadTimeOptimal&quot;]) {
  18. console.log(&quot;log here for number &quot; + number)
  19. }
  20. }
  21. }

<!-- end snippet -->

答案4

得分: -1

以下是您提供的代码的翻译部分:

  1. const data = {
  2. '1-leadTimeNormal': 10,
  3. '3-leadTimeNormal': 22,
  4. '2-leadTimeNormal': 10,
  5. '2-leadTimeOptimal': 2,
  6. '3-leadTimeOptimal': 22,
  7. '1-leadTimeOptimal': 7
  8. }
  9. const arr = Object.keys(data);
  10. const leadTimeNormals = arr.filter(i => i.includes("leadTimeNormal"));
  11. leadTimeNormals.forEach(item => {
  12. const [number,] = item.split("-");
  13. if (arr[item] < arr[`${number}-leadTimeOptimal`]) {
  14. console.log("It is here");
  15. } else {
  16. console.log("it is not here");
  17. }
  18. });

请注意,我已经忽略了注释部分,只提供了代码的翻译。

英文:

<!-- begin snippet: js hide: false console: true babel: false -->

<!-- language: lang-js -->

  1. const data = {
  2. &#39;1-leadTimeNormal&#39;: 10,
  3. &#39;3-leadTimeNormal&#39;: 22,
  4. &#39;2-leadTimeNormal&#39;: 10,
  5. &#39;2-leadTimeOptimal&#39;: 2,
  6. &#39;3-leadTimeOptimal&#39;: 22,
  7. &#39;1-leadTimeOptimal&#39;: 7
  8. }
  9. const arr = Object.keys(data);
  10. const leadTimeNormals = arr.filter(i =&gt; i.includes(&quot;leadTimeNormal&quot;));
  11. leadTimeNormals.forEach(item =&gt; {
  12. const [number,] = item.split(&quot;-&quot;);
  13. if(arr[item] &lt; arr[`${number}-leadTimeOptimal`]) {
  14. console.log(&quot;It is here&quot;);
  15. } else {
  16. console.log(&quot;it is not here&quot;);
  17. }
  18. });

<!-- end snippet -->

Hope this helps

huangapple
  • 本文由 发表于 2020年1月3日 17:44:40
  • 转载请务必保留本文链接:https://go.coder-hub.com/59576242.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定