javascript从数组中移除项目,如果项目已存在于数组

时间:2015-05-22 05:03:27

标签: javascript

以下项目添加到数组:

var arrayOptions = [];

function AddToFilterOptionList(mode) {
    arrayOptions.push(mode);
    }

从数组中删除项目:

function RemoveFromFilterOptionList(mode) {
    var index = arrayOptions.indexOf(mode);
    if (index !== -1) {
        arrayOptions.splice(index, 1);
    }}

例如,如果我打电话

AddToFilterOptionList('APPLE') - APPLE应添加到数组中。

如果我再次打电话

AddToFilterOptionList('APPLE+FRUIT') - 它应该从数组arrayOptions中移除“ APPLE ”项,并应添加APPLE+FRUIT

任何时候只有一个以APPLE开头的单词可以在数组中。 如何在javascript中找到喜欢'APPLE'这个词。

我尝试使用Match()返回匹配的单词。只有当整个单词匹配但不是单词的开头时,IndexOf()才会返回1.

6 个答案:

答案 0 :(得分:1)

遍历数组,然后使用startsWith方法。

<KeyDescriptor use="signing">
            <ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
                <ds:X509Data>
                    <ds:X509Certificate>MIIFnzCCA4egAwI...</ds:X509Certificate>
                </ds:X509Data>
            </ds:KeyInfo>
        </KeyDescriptor>

答案 1 :(得分:1)

假设'this+that'模式一致,并且我们只关心起始项目,这将有效。

http://jsbin.com/gefasuqinu/1/edit?js,console

var arr = [];

function remove(item) {
  var f = item.split('+')[0];

  for (var i = 0, e = arr.length; i < e; i++) {
    if (arr[i].split('+')[0] === f) {
      arr.splice(i, 1);
      break;
    }
  }
}

function add(item) {
  remove(item);
  arr.push(item);
}

答案 2 :(得分:1)

更新:

function add (array, fruits) {
  var firstFruit = fruits.split('+')[0]
  var secondFruit = fruits.split('+')[1]
  var found = false
  var output = []

  output = array.map(function (item) {
    if (item.indexOf(firstFruit) > -1) {
      found = true
      return fruits
    }
    else return item
  })

  if (! found) {
    array.push(fruits)
  }

  return output
}

var fruits = []
add(fruits, 'APPLE')
fruits = add(fruits, 'APPLE+GRAPE')
console.log(fruits[0]) // 'APPLE+GRAPE'
fruits = add(fruits, 'APPLE')
console.log(fruits[0]) // 'APPLE'

答案 3 :(得分:1)

您需要按+分割,然后循环生成的数组以添加/删除所有项目:

&#13;
&#13;
var arrayOptions = [];

function AddToFilterOptionList(mode) {
    mode.split(/\+/g).forEach(function(el) {
        var index = arrayOptions.indexOf(el);
        if (index !== -1) {
            arrayOptions.splice(index, 1);
        }
        else {
            arrayOptions.push(el);
        }
    });
}

function RemoveFromFilterOptionList(mode) {
    var index = arrayOptions.indexOf(mode);
    if (index !== -1) {
        arrayOptions.splice(index, 1);
    }
}

AddToFilterOptionList('APPLE');
document.write('<p>' + arrayOptions); // expect: APPLE

AddToFilterOptionList('APPLE+FRUIT');
document.write('<p>' + arrayOptions); // expect: FRUIT

AddToFilterOptionList('APPLE+FRUIT+CARROT');
document.write('<p>' + arrayOptions); // expect: APPLE,CARROT
&#13;
&#13;
&#13;

答案 4 :(得分:1)

试试这个,但代码没有优化:P

<html>
    <head>
        <script src = "jquery-1.10.2.min.js"></script>
        <script type = "text/javascript">
            var itemList = [];  
            function addItem()
            {
                var item = $('#item').val();
                if(item != '' || item != 'undefined')
                {
                    if(itemList.length == 0)
                        itemList.push(item);
                    else
                    {
                        for(i=0;i<itemList.length;i++)
                        {
                            var splittedInputItems = [];
                            splittedInputItems = item.split("+");
                            var splittedListItems = [];
                            splittedListItems = itemList[i].split("+");
                            if(splittedListItems[0] == splittedInputItems[0])
                            {
                                itemList.splice(i,1);
                                itemList.push(item);
                                return;
                            }
                        }
                        itemList.push(item);
                    }
                }
            }
        </script>
    </head>
    <body>
        <input id="item" type = "text"/>
        <input type = "button" value="Add" onclick="addItem()">
    </body>
</html>

答案 5 :(得分:0)

let items = [1, 2, 3, 2, 4, 5, 2, 7];
let item = 2;
for (let i = 0; i < items.length; i++) {
    if (items[i] === item) {
        items.splice(i, 1);
        i = i - 1;
    }
}

如果要从items数组中删除元素“ 2”,这是一种方法。