【问题标题】:How to take a json as input and produce 2 arrays in Javascript?如何将 json 作为输入并在 Javascript 中生成 2 个数组?
【发布时间】:2022-01-17 05:18:50
【问题描述】:

我想将 JSON 作为输入并生成 2 个数组,一个仅包含键,另一个仅包含值。但是,如果键和值在数值上相等,则该对将不会出现在这些数组中。我该如何解决?

【问题讨论】:

    标签: javascript arrays json


    【解决方案1】:

    如果我明白,你在问什么,有两个内置函数,给你的键和数据是分开的,不需要循环。

    • Object.values 返回对象的所有值 (mdn docs)
    • Object.keys 返回对象的所有键 (mdn docs)

    它适用于对象和数组:

    var data = {a:1, b:2, c:3, '1':5,'2':'a'};
    // just to visualisze the input data
    console.info('data-object:', JSON.stringify(data));
    // extracted keys
    console.info('keys:',  Object.keys(data));
    // extracted values
    console.info('values:',  Object.values(data));
    
    var list = [1,2,3,4];
    // just to visualisze the input data
    console.info('data-list:', JSON.stringify(list));
    // extracted keys
    console.info('keys:',  Object.keys(list));
    // extracted values
    console.info('values:',  Object.values(list));
    
    var data2 = {"1":1, "2":2};
    // just to visualisze the input data
    console.info('data-list:', JSON.stringify(data2));
    // extracted keys
    console.info('keys:',  Object.keys(data2));
    // extracted values
    console.info('values:',  Object.values(data2));

    【讨论】:

    • 是的。但是, var data = {"1":1, "2":2} 如果键和值在数值上相等,则该对将不会出现在这些数组中。
    • @AlImranHossain 我不明白需要什么。您能否为您的示例定义所需的结果{1:1, 2:2}
    • 输入数据 = {a:5, b:6, c:3, '1':4,'2':2};输出= [ 6, 5, 4, 3 ] [ '1', 'a', 'b', 'c' ]
    • @AlImranHossain,遍历创建的数组并删除匹配的所有项目。
    • @AlImranHossain 我认为您的回答涵盖了您的问题,还是我遗漏了什么,您还需要什么吗?
    【解决方案2】:

    您可以使用Object.entries 遍历对象的key,values,然后检查键和值是否不同,将它们放入相关数组中。像这样:

    let obj = {a:5, b:6, c:3, '1':4,'2':2};
    let keys = [] , values = [];
    Object.entries(obj).forEach(([key,value])=> {
        if(key != value){
            keys.push(key);
            values.push(value)
        }
    });
    
    console.log('keys:',keys);
    console.log('values:', values);

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-03-01
      • 2020-06-22
      • 2017-07-26
      • 1970-01-01
      • 2021-11-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多