-3

array2を読み取り、array1からアイテムを削除し、array1に新しいアイテムを追加したいと思います。

パラメータ「削除済み」が1の場合、このアイテムを削除します。パラメータ「削除済み」が0の場合、アイテムを追加します。

javascriptを使用して次のソリューションを作成するにはどうすればよいですか?

私は2つの配列を持っています:

var array1 = [
{ItemId: "1", Name: "John"},
{ItemId: "2", Name: "George"}, 
{ItemId: "3", Name: "Peter"}
]

var array2 = [
{ItemId: "1", Name: "John", Removed: "1"},
{ItemId: "4", Name: "Mario", Removed: "0"}, 
{ItemId: "5", Name: "Mike", Removed: "0"}
]

次の結果が欲しい:

var array1 = [
    {ItemId: "2", Name: "George"}, 
    {ItemId: "3", Name: "Peter"},
    {ItemId: "4", Name: "Mario"}, 
    {ItemId: "5", Name: "Mike"}
    ]
4

2 に答える 2

2

これを試して:

注:これは、同じ「名前」または同じ「アイテムID」を持つ重複エントリのチェックを行いません。あなたもそれをしたいかもしれません。

var array1 = [
    {ItemId: "1", Name: "John"},
    {ItemId: "2", Name: "George"}, 
    {ItemId: "3", Name: "Peter"}
];

var array2 = [
    {ItemId: "1", Name: "John", Removed: "1"},
    {ItemId: "4", Name: "Mario", Removed: "0"}, 
    {ItemId: "5", Name: "Mike", Removed: "0"}
];

for(var i = 0; i < array2.length; i++) {
    if(array2[i]["Removed"] == "1") {
        // Remove elements
        for(var j = 0; j < array1.length; j++) {
            if(array1[j]["Name"] == array2[i]["Name"]) {
                array1.splice(j,1);
            }
        }
    } else {
        item = {};
        item["ItemId"] = array2[i]["ItemId"];
        item["Name"] = array2[i]["Name"];
        array1.push(item);
    }
}
于 2013-02-23T16:37:03.797 に答える
-1

https://stackoverflow.com/a/1144249/1922787Object.equals()から使用:

function mergeArrays(array, operations) {
  var obj;
  var removed;

  for (var i = 0; i < operations.length; i++) {
    obj = operations[i];
    removed = obj.Removed;
    delete obj.Removed;

    if (removed === '0') { array.push(obj); }
    if (removed === '1') { array = removeObjFromArray(array, obj); }
  }

  return array;
}

function removeObjFromArray(array, obj) {
  for (var i = 0; i < array.length; i++) {
    if (obj.equals(array[i])) {
      array.splice(i, 1);
      break; // assuming you don't have dupplicated objects in your array
    }
  }

  return array;
}

array1 = mergeArrays(array1, array2);
于 2013-02-23T16:47:49.513 に答える