javascript - 弄清楚如何为诸如push、indexOf之类的函数设置动态变量的问题

标签 javascript arrays push indexof

如何在函数上设置动态变量?如果您尝试运行截图版本,您可以看到输出只是一个点。我还尝试查看代码内部,看看,返回值是未定义的。我也尝试过使用 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);

关于javascript - 弄清楚如何为诸如push、indexOf之类的函数设置动态变量的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54134855/

相关文章:

javascript - 使用 Javascript/JQuery 为移动网络(android、iOS、Windows Phone)突出显示/选择元素上的文本

C++ 我的数组没有保存我的卷

java - 即使没有重复的单词,如何从字符串中删除所有重复的单词?

javascript - array push 函数向数组中添加一个空索引

javascript - 初始化两张传单 map - 一张重写另一张

javascript - 如何使用 Express 的静态中间件正确加载图像?

heroku - git push heroku master 导致真实性问题和主机 key 失败

网页推送通知点击 Action 追踪

javascript - 使用 Express 和 Socket.IO 的 session 支持的解释?

c++ - 如果我在 C++ 中删除了一次数组,但分配了多次怎么办?