使用值从关联数组中删除项目

时间:2014-04-17 05:00:40

标签: javascript jquery

我有一个java脚本数组。我想使用值从数组中删除特定项。我无法通过键删除,因为我正在制作动态功能,并且我只有值,所以我必须从使用值中删除特定项目。

var arr =   Array();
arr['a']    =   123;
arr['b']    =   234;
arr['c']    =   345;
arr['d']    =   456;
arr['e']    =   567;

5 个答案:

答案 0 :(得分:2)

如果您想要删除重复的值:

var arr =   Array();
arr['a']    =   123;
arr['b']    =   234;
arr['c']    =   345;
arr['d']    =   456;
arr['e']    =   567;

function removeEl(arr,val){
    for (var i in arr){
        if(arr[i]==val){
            delete arr[i];
        }
    }
}
removeEl(arr,234)
console.log(arr)

答案 1 :(得分:2)

您似乎将JavaScript数组视为关联数组,但是,这并不是JavaScript中数组的工作方式。根据您的数据格式,我建议将它们存储为对象:

var obj = {
   "a": 123,
   "b": 234,
   "c": 345,
   "d": 456,
   "e": 567
};

然后您可以使用此函数进行迭代和删除:

function removeByValue(object, value) {
   for (var e in object) {
      if (object[e] === value) {
         delete object[e];
      }
   }
}

答案 2 :(得分:0)

首先,您要创建array,然后将其视为object

如果您假装数组只能获取integer属性,那么您的JavaScript生活将变得更加轻松。[1]

所以,你真正想做的是:

var obj =   {};
obj['a']    =   123;
obj['b']    =   234;
obj['c']    =   345;
obj['d']    =   456;
obj['e']    =   567;

或者,以对象文字格式:

var obj =   {
  a:   123,
  b:   234,
  c:   345,
  d:   456,
  e:   567
};

要从property删除object,只需使用delete关键字:

delete obj.b;

[1]从技术上讲,数组也是对象 - 但数组是特殊目的对象。

答案 3 :(得分:0)

.indexOf无效,因为它不是数组,因此您应手动查找并删除此值

var arr =   Array();
arr['a']    =   123;
arr['b']    =   234;
arr['c']    =   345;
arr['d']    =   456;
arr['e']    =   567;

var result={};
var value_to_remove = 123;
for(key in arr){
    if(arr[key]!=value_to_remove)
        result[key] = arr[key];
}

答案 4 :(得分:-1)

在PHP中使用array_search查找密钥然后使用unset()销毁指定的变量。

<强>编辑

在Jquery中

查找索引使用inArray jQuery.inArray( "123", arr )

并取消设置使用delete

delete arr.index;