弄清楚如何将动态变量设置为 push、indexOf 等函数的问题

problems to figure out how to set dynamic variables to functions like push, indexOf

如何在函数上设置动态变量?如果您尝试 运行 您可以看到的截断版本,输出只是一个点。我还尝试查看代码内部,然后查看 return 值未定义。我也尝试过 window[${which_section}],但我是初学者,不知道该如何处理。谢谢

var Nr22_objectarray_1 = [ {name: "fruit", species: "apple"},
                           {name: "miau", species: "cat"},
                       {name: "omeprazol", species: "medicine"},
                         ];
var Nr22_objectarray_2 = [ {name: "fruit", species: "orange"},
                           {name: "miauzi", species: "cat"},
                           {name: "ezomeprazol", species: "medicine"},
                         ];
var Nr22_objectarray_3 = [ {name: "fruit", species: "banana"},
                           {name: "miau", species: "cat"},
                           {name: "nivea", species: "cream"},
                         ];
function Nr22_reduceDuplicatesOnObjectArrays (which_array, which_section) {
  let tester = which_array.reduce(function (a, b){
    if ( a.indexOf(b.which_section) < 0 ) {
       // which_section = name
       a.push(b.which_section);
     }
     //a = undefined
     return a;
   }, []);
   tester.sort();
   return tester.join(", ") + ".";
}
let Nr22_array_new = [];
Nr22_array_new = Nr22_objectarray_1.concat(Nr22_objectarray_2, 
Nr22_objectarray_3);
let Nr22_uniq = Nr22_reduceDuplicatesOnObjectArrays(Nr22_array_new, "name");
document.write(Nr22_uniq);

我认为您尝试使用的是 [] 语法。您可以使用它根据字符串提供的 属性 名称访问对象的 属性。

const which_section="name";
const b = {name: 'miauzi'};
console.log(b[which_section]); //=> miauzi

var Nr22_objectarray_1 = [{
    name: "fruit",
    species: "apple"
  },
  {
    name: "miau",
    species: "cat"
  },
  {
    name: "omeprazol",
    species: "medicine"
  },
];
var Nr22_objectarray_2 = [{
    name: "fruit",
    species: "orange"
  },
  {
    name: "miauzi",
    species: "cat"
  },
  {
    name: "ezomeprazol",
    species: "medicine"
  },
];
var Nr22_objectarray_3 = [{
    name: "fruit",
    species: "banana"
  },
  {
    name: "miau",
    species: "cat"
  },
  {
    name: "nivea",
    species: "cream"
  },
];

function Nr22_reduceDuplicatesOnObjectArrays(which_array, which_section) {
  let tester = which_array.reduce(function(a, b) {
    if (a.indexOf(b[which_section]) < 0) {
      // which_section = name
      a.push(b[which_section]);
    }
    //a = undefined
    return a;
  }, []);
  tester.sort();
  return tester.join(", ") + ".";
}
let Nr22_array_new = [];
Nr22_array_new = Nr22_objectarray_1.concat(Nr22_objectarray_2,
  Nr22_objectarray_3);
let Nr22_uniq = Nr22_reduceDuplicatesOnObjectArrays(Nr22_array_new, "name");
document.write(Nr22_uniq);