Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/431.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/75.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_Jquery - Fatal编程技术网

Javascript 如何获取特定行的索引来删除它

Javascript 如何获取特定行的索引来删除它,javascript,jquery,Javascript,Jquery,我有这个阵列: {"actividades":[ {"id_miembro":"V-005","id_dpto":"D-01","id_actividad":"AC-04","id_seccion":"S-03"}, {"id_miembro":"V-006","id_dpto":"D-01","id_actividad":"AC-01","id_seccion":"S-02"}, {"id_miembro":"V-007","id_dpto":"D-01","id_ac

我有这个阵列:

{"actividades":[
    {"id_miembro":"V-005","id_dpto":"D-01","id_actividad":"AC-04","id_seccion":"S-03"},
    {"id_miembro":"V-006","id_dpto":"D-01","id_actividad":"AC-01","id_seccion":"S-02"},
    {"id_miembro":"V-007","id_dpto":"D-01","id_actividad":"AC-02","id_seccion":"S-01"},
    {"id_miembro":"V-008","id_dpto":"D-01","id_actividad":"AC-03","id_seccion":"S-01"}
]}

“id\u miembro”=“V-007”
要从数组中删除此数据时,如何获取数组的索引?

您可以使用
$.grep()

注意:我假设您在一个名为
xObj的变量中有JSON

API:

只需使用JavaScript:

假设:

myObj = {"actividades":[
    {"id_miembro":"V-005","id_dpto":"D-01","id_actividad":"AC-04","id_seccion":"S-03"},
    {"id_miembro":"V-006","id_dpto":"D-01","id_actividad":"AC-01","id_seccion":"S-02"},
    {"id_miembro":"V-007","id_dpto":"D-01","id_actividad":"AC-02","id_seccion":"S-01"},
    {"id_miembro":"V-008","id_dpto":"D-01","id_actividad":"AC-03","id_seccion":"S-01"}
]}
然后:

.filter
返回过滤后的数组。我将其分配给旧对象作为替换,但您当然可以在任何想要的变量中使用它)


但是,
.filter()
的IE支持是IE9+。如果要支持较旧的浏览器,您可能需要使用MDN链接中提供的plyfill。

使用以下库很容易:


请参见。

其他答案对于通过在数组中删除元素非常有用,但如果您需要索引,这里为您提供了一个小功能:

function getIndex(arr, key, val, single){
    var rArr = $.map(arr, function(obj, i){
        if(obj[key] === val) return i;
    });

    return single ?
        (rArr.length ? rArr[0] : -1):
        rArr; 
}
你可以这样称呼它:

var myIndex=getIndex(obj.actividades,'id_miembro','V-007',true)

其中参数如下所示:

  • 您正在搜索的对象
  • 你看到的钥匙
  • 匹配的值
  • 返回单个索引[整数]或所有匹配项[数组]

  • 这里有一个活生生的例子:

    @Tilwin感谢API链接。。!我想你把
    i,val
    搞混了-索引是
    grep
    -“Type:Function(objectelementofarray,Integer indexInArray)”中的第二个参数是的,没错。。据此编辑。我想知道有没有什么简单的方法可以记住这一点,因为我在使用
    .each()
    和其他工具时总是感到困惑:)我一直在混淆它们…有一天它会点击…也许:\I realice the test with.grep,它会删除搜索行,但是json数组返回以下内容:{[{“id_miembro”:“V-005”,“id_dpto”:“D-01”,“id_actividad”:“AC-04”,“id_seccion”:“S-03”},{“id_miembro”:“V-006”,“id_dpto”:“D-01”,“id_actividad”:“AC-01”,“id_seccion”:“S-02”}{“id_miembro”:“V-008”,“id_dpto”:“D-01”,“id_actividad”:“AC-03”,“id_seccion”:“S-01”}]}似乎索引“actividades”“是否已删除?对于本机JS支持的函数,实际上不需要导入库。此外,这并不是OP真正想要的结果。@Cerbrus代码使用Lo Dash更清晰。此外,它还提供了很多OP可以在代码的其他部分使用的功能。
    myObj.actividades = myObj.actividades.filter(function(e){
        return e.id_miembro !== "V-007";
    });
    
    var index = _.findIndex(array.actividades, { 'id_miembro': 'V-007' });
    
    function getIndex(arr, key, val, single){
        var rArr = $.map(arr, function(obj, i){
            if(obj[key] === val) return i;
        });
    
        return single ?
            (rArr.length ? rArr[0] : -1):
            rArr; 
    }