首页 > 解决方案 > 具有键和值删除的字符串数组已存在

问题描述

我发现了一些类似的问题,但没有一个对我有帮助。

我有一个数组,我正在将项目推入其中。我想检查是否已经有一个项目然后删除并添加一个新值。

我是在成功调用 ajax 时这样做的,

var taxSplitUp = []; // my array

// ajax call here, in the success 

for (var i in data.d) { 

  var ItemTaxAmt= data.d[i].ItemTaxAmt;
  var TaxName = data.d[i].TaxName;

  var idx = $.inArray(TaxName, taxSplitUp); // checks if already exist

  if (idx == -1) {

    var tx1 = '{"' + TaxName + '":"' + parseFloat(ItemTaxAmt).toFixed(2) + '"}';
    taxSplitUp.push(tx1);
  } 

  else {
    taxSplitUp.splice(idx, 1); // removing
    var t1 = taxSplitUp[TaxName]; // selecting the value from array

    var tx1 = '{"' + TaxName + '":"' + parseFloat(ItemTaxAmt).toFixed(2) + parseFloat(t1).toFixed(2) + '"}';

    taxSplitUp.push(tx1);
  }

}

在这里,如果相同的键来了,那么我想将这些值加在一起,并且只需要一个在数组中,但是检查总是返回 false 并将另一个添加到数组中。

请帮忙。

标签: javascriptjqueryarrays

解决方案


$.inArray 不适用于关联数组。尝试以下解决方案

for (var i in data) {

  var ItemTaxAmt= data[i].ItemTaxAmt;
  var TaxName = data[i].TaxName;

  console.log(TaxName);

  $.map(taxSplitUp, function(item, index) {
 if (item.TaxName == TaxName) {
   item.ItemTaxAmt = ItemTaxAmt;

 }else{

    taxSplitUp.push({
        'TaxName' :TaxName,
        'ItemTaxAmt' : ItemTaxAmt
    });
 }
});

}
console.log(taxSplitUp);

推荐阅读