Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.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 如果我只知道其中一个项目的值';谁的财产?_Javascript - Fatal编程技术网

Javascript 如果我只知道其中一个项目的值';谁的财产?

Javascript 如果我只知道其中一个项目的值';谁的财产?,javascript,Javascript,我有以下JavaScript对象: { "DPI": "66.8213457076566", "width": "563.341067", "editable": "True", "pricecat": "6", "numpages": "2", "height": "400", "page": [{ "filename": "999_9_1.jpg", "line": [{ "tes

我有以下JavaScript对象:

{
    "DPI": "66.8213457076566",
    "width": "563.341067",
    "editable": "True",
    "pricecat": "6",
    "numpages": "2",
    "height": "400",
    "page": [{
        "filename": "999_9_1.jpg",
        "line": [{
            "test": "test 1",
            lineid: 22
        },
        {
            "test": "test 2",
            lineid: 22
        },
        {
            "test": "test 3",
            lineid: 22
        },
        {
            "test": "test 4",
            lineid: 22
        },
        {
            "test": "blank",
            lineid: 22
        }]
    },
    {
        "filename": "999_9_2.jpg",
        "line": []
    }]
}
我可以用
measurements.page[0].line[0].lineid

但我真正需要做的是,当我想要编辑一个特定的行,但我只有
lineid
值可用(例如
22
),而没有数组中的行号:

measurements.page[0].line[WHAT DO I PUT HERE].test = "new changed value";

您需要使用
for
循环遍历数组,直到找到要查找的项目。

您可以创建一个函数来执行此操作:

function getLinesByLineID( lines, id ) {
   var results = [];
   for( var i = 0, j = lines.length; i < j; i++ ) {
       if( lines[ i ].lineid === id ) {
          results.push( lines[ i ] ); 
       }
   }
   return ( results.length > 0 ) ? results : false;
}
函数getLinesByLineID(行,id){ var结果=[]; 对于(变量i=0,j=lines.length;i0)?结果:false; }
然后可以这样调用它:
var lines=getLinesByID(json.page[0].line,22)

您必须搜索

function find_in_array(arr, name, value) {
    for (var i = 0, len = arr.length; i<len; i++) {
        if (name in arr[i] && arr[i][name] == value) return i;
    };
    return false;
}

var id = find_in_array(measurements.page[0].line, 'lineid', 22);
函数查找数组中的数组(arr、名称、值){

对于(var i=0,len=arr.length;ibriliant感谢发送可搜索值name的好方法,太喜欢了:-)非常感谢:-)非常感谢:-)很好的一个添加了一个点,但是lauri在键入lol方面稍微快了一点非常感谢