【问题标题】:JSON loop through key value pairs to set another key valueJSON 循环遍历键值对来设置另一个键值
【发布时间】:2020-11-05 01:10:19
【问题描述】:

我对脚本和 JSON 非常陌生,我正在尝试遍历对象中的一些键对(如下所示)来完成,“如果 3[x].4 中的值 = 'BBB',那么返回 3[x].1" 中的值

很高兴详细说明这一点,因为我知道这可能不清楚。提前感谢您的帮助!

var pID = {
'3[1].1': '111111',
'3[1].4': 'PPP',
'3[1].5': 'PPP',
'3[2].1': '222222',
'3[2].4': 'MMM',
'3[2].5': 'MMM',
'3[3].1': '333333',
'3[3].4': 'BBB',
'3[3].5': 'BBB',
'3[4].1': '444444',
'3[4].4': 'XXX',
'3[4].5': 'XXX'}

【问题讨论】:

  • 嘿@Brendan,这些值总是按排序顺序排列的吗?就 1 4 5 模式而言?
  • 是的,它们将始终按此顺序排列。

标签: json loops key-value


【解决方案1】:

由于 JS 对象(根据定义)是一组未排序的键值对,因此使用 order 来获得我们正在寻找的结果是没有意义的。

使用此解决方案,您将需要以某种方式找出i < 4 的值。不确定在这种有限的背景下最好的方法是什么。一种解决方案可能是Math.ceil(Object.keys(pID).length / 3)

var pID = {
    '3[1].1': '111111',
    '3[1].4': 'PPP',
    '3[1].5': 'PPP',
    '3[2].1': '222222',
    '3[2].4': 'MMM',
    '3[2].5': 'MMM',
    '3[3].1': '333333',
    '3[3].4': 'BBB',
    '3[3].5': 'BBB',
    '3[4].1': '444444',
    '3[4].4': 'XXX',
    '3[4].5': 'XXX',
};

for (let i = 0; i < 4; i++) {
    let currentKey = `3[${i}].4`;
    if (currentKey in pID) {
        let currentValue = pID[currentKey];
        if ((currentValue == 'BBB')) console.log(pID[`3[${i}].1`]);
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-11-22
    • 2016-01-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-29
    • 2014-06-08
    相关资源
    最近更新 更多