首页 > 解决方案 > 将项目添加到数组中,而不是用新值覆盖当前值

问题描述

我试图弄清楚如何将新项目添加到数组中,而不是用新值覆盖当前值。我正在使用 .push() ,它应该在每次映射通过数组时添加项目。有任何想法吗?

const searchChips = [
{value: "string"}, {value: "test"}
];
const query = {
        bool: {
            filter: []
        }
    };
const searchQuery = {
  query_string: {
    query: ""
  }
};
searchChips.map(chip => {
  console.log(chip);
  const key = "query";
  searchQuery.query_string[key] = chip.value;
  query.bool.filter.push(searchQuery);
});
console.log(query);

在此处输入图像描述

标签: javascriptarrays

解决方案


问题似乎是您正在进入功能query.bool.filter之外.map()。尝试这个。

const searchChips = [{ value: "string" }, { value: "test" }];
const query = {
  bool: {
    filter: []
  }
};

searchChips.forEach(chip => {
  const key = "query";
  const searchQuery = {
    query_string: {
      query: ""
    }
  };
  searchQuery.query_string[key] = chip.value;
  query.bool.filter.push(searchQuery);
});
console.log(JSON.stringify(query));

推荐阅读