Source: deprecated/select.js

import { str2fun } from "../helpers/helpers.js";

/**
 * @function <s>properties/select</s>
 * @deprecated
 * @summary From now on, use {@link filter}
 */
export function select({ x, expression }) {
  let features = [...x.features];

  // Get keys
  let keys = [];
  x.features
    .map((d) => d.properties)
    .forEach((d) => {
      keys.push(Object.keys(d));
    });
  keys = Array.from(new Set(keys.flat()));

  keys.forEach((d) => {
    expression = expression.replace(d, `d.properties.${d}`);
  });

  expression = "d => " + expression;

  let output = JSON.parse(JSON.stringify(x));
  output.features = features.filter(str2fun(expression));
  return output;
}