Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用jQuery或JavaScript动态获取JSON数组键和值_Javascript_Jquery_Json - Fatal编程技术网

如何使用jQuery或JavaScript动态获取JSON数组键和值

如何使用jQuery或JavaScript动态获取JSON数组键和值,javascript,jquery,json,Javascript,Jquery,Json,我在下面介绍了JSON,我面临着从JSON数组动态获取密钥和值的困难: var productJSON = { "byProduct": { "category": { "Entertainment": { "TV": 7, "Speaker": 24, "DVD Player": 5, "Home Theater": 4

我在下面介绍了JSON,我面临着从JSON数组动态获取密钥和值的困难:

var productJSON = {
    "byProduct": {
        "category": {
            "Entertainment": {
                "TV": 7,
                "Speaker": 24,
                "DVD Player": 5,
                "Home Theater": 4
            },
            "Home": {
                "Sofa Couch": 1,
                "TV Furniture": 4
            },
            "Mobile": {
                "iPhone 5s": 1,
                "Accessories": 4
            }
        }
    }
}
我需要每个类别的键和值,并放入两个不同的数组中,一个用于产品名称,另一个用于产品计数,如:

["TV", "Speaker", "DVD Player", "Home Theater","Sofa Couch", "TV Furniture", "iPhone 5s", "Accessories"]

[7, 24, 5, 4,1,4,1,4]
有人能帮忙吗?我怎样才能得到这样的输出

如何从上面的JSON数组中获取这些值,下面是我的代码,但无法解析每个类别中的所有项:

var ProductJSON = productJSON.byProduct;
var productsName = [], productCount = [];
Object.keys(ProductJSON.category).forEach(function (v) {
    var k = Object.keys(ProductJSON.category[v])[0];
    productsName.push(k);
    productCount.push(ProductJSON.category[v][k]);
});
console.log(productsName);
console.log(productCount);

提前感谢您的帮助。

这是这方面的完整解决方案


这是纯JavaScript。

您可以使用lodash执行以下操作:

var productJSON={“副产品”:{“类别”:{“娱乐”:{“电视”:7,“扬声器”:24,“DVD播放器”:5,“家庭影院”:4},“家庭”:{“沙发沙发”:1,“电视家具”:4},“手机”:{“iPhone 5s”:1,“配件”:4}};
var Products=productJSON.byProduct.category;
var productsName=[],
productCount=[];
_.forEach(产品、功能(项目){
_.forEach(项目、功能(v、k){
产品名称推送(k);
productCount.push(v);
});
});
log('productsName:',productsName);
log('productCount:',productCount)

基本上你已经掌握了。但由于某些原因,您只获取了第一个产品名
Object.keys(ProductJSON.category[v])[0]
。删除
[0]
将为您提供所有产品名称。但它不会为所有产品提供计数:(您还必须迭代
Object.keys(ProductJSON.category[v])
。或者简单地使用
for/in
循环:
for(ProductJSON.category[v]中的var k]){productsName.push(k);productCount.push(ProductJSON.category[v][k]);}
。谢谢Felix!它起作用了。只需注意:您处理的是JavaScript
array
object
,而不是
JSON
,尽管它们看起来非常相似。
            var Products = productJSON.byProduct.category;

            var productsName = [], productCount = [];

            for (var product in Products) {
                var items = Products[product]
                for (var item in items) {
                    productsName.push(item);
                    productCount.push(items[item]);
                }
            }
            console.log(productsName);
            console.log(productCount);