检查array1是否包含array2的值,是否包含将array1特定值推入array2而不复制它

时间:2018-08-09 12:13:27

标签: javascript arrays multidimensional-array

我有一个数组,如果该数组包含另一个数组具有的值,我想从另一个数组中推送键/值。

var array1 = [
  {
    "item":"carbon",
    "name_i18n": "UI_FUEL_1_NAME_L",
    "prefix":"resources",
  },
  {
    "item":"silver",
    "name_i18n": "UI_ASTEROID1_NAME_L",
    "prefix":"resources",
  },
]

我要检查这个数组:

var array2 = [
{
  "recipe":"RECIPE_ASTEROID1__1",
  "ingredients":[
      {"item":"silver","qnt":"100"},
      {"item":"carbon","qnt":"100"},
  ]
},
{
  "recipe":"RECIPE_FUEL3__2",
  "ingredients":[
      {"item":"carbon","qnt":"50"},
      {"item":"carbon","qnt":"50"},
      {"item":"carbon","qnt":"50"},
  ]
},

在array1中具有“ item”的值(如果有的话),我想将配方键/值推入array1中,但不要重复,因为您可以看到array2中的第二个条目包含3种成分,同名,我不想将3x键/值放在array1中。

检查后的示例输出:

var array1 = [
  {
    "item":"carbon",
    "prefix":"resources",
    "recipe":"RECIPE_FUEL3__2",
  },
  {
    "item":"silver",
    "prefix":"resources",
    "recipe":"RECIPE_ASTEROID1__1",
  },
]

我已经使用以下代码检查了它们是否具有另一个属性:

$.each( array1, function( key, value ) {
  if (name === value.name_i18n){
    name = value.item;
  }
});

我过去经常将name的值压入array2中,但这只是一个值,而不是上面的示例中的3。

0 个答案:

没有答案