Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/408.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
Javascript JSON文件中包含键值对的数组索引_Javascript_Ajax_Json - Fatal编程技术网

Javascript JSON文件中包含键值对的数组索引

Javascript JSON文件中包含键值对的数组索引,javascript,ajax,json,Javascript,Ajax,Json,我该如何编写一个函数来搜索JSON文件,以查找存在包含特定键值对的对象的索引?例如,如果我们查找值:“100.0”,函数将返回以下JSON文档的0,因为key1位于索引0 var object = { key1 : { name : 'xxxxxx', value : '100.0' }, key2 : { name : 'yyyyyyy', value : '200.0' }, key3 :

我该如何编写一个函数来搜索JSON文件,以查找存在包含特定键值对的对象的索引?例如,如果我们查找
值:“100.0”
,函数将返回以下JSON文档的
0
,因为
key1
位于索引
0

var object = {
    key1 : {
        name : 'xxxxxx',
        value : '100.0'
    },
    key2 : {
        name : 'yyyyyyy',
        value : '200.0'
    },
    key3 : {
        name : 'zzzzzz',
        value : '500.0'
    },
}

给你一把小提琴:

你可以这样称呼它:

findInJson("name", "xxxxxx")

这个站点:提供了更多关于如何解析JSON的信息

如果保证以后不会删除和添加对象中的密钥,您可以使用:

function (object, key, value) {
    var index = 0;

    for (var oKey in object) {
        if (object[oKey][key] === value) {
            return index;
        }

        index++;
    }

    return -1;
}
但语句以任意顺序在对象上迭代。有关详细说明,请参阅“删除、添加或修改属性”部分


如果希望保留顺序,最好使用数组并将“keyN”放入{name,value}对象中。

如果您对支持IE8及以下版本不感兴趣,则可以使用以下方法:

function getIndex(val) {
    for (i = 0; i < Object.keys(object).length; i++) {
        if (object[Object.keys(object)[i]].value === val) {
            return i;
        }
    };
    return -1;
};
console.log( getIndex("100.0") ); // returns  0
console.log( getIndex("500.0") ); // returns  2
console.log( getIndex("800.0") ); // returns -1
函数getIndex(val){
对于(i=0;i

请参见

注意,您的
var对象
不是数组,而是(n)(javascript)对象。了解更多
function getIndex(val) {
    for (i = 0; i < Object.keys(object).length; i++) {
        if (object[Object.keys(object)[i]].value === val) {
            return i;
        }
    };
    return -1;
};
console.log( getIndex("100.0") ); // returns  0
console.log( getIndex("500.0") ); // returns  2
console.log( getIndex("800.0") ); // returns -1