如何从可变参数值中找到对象的数组位置?

时间:2019-05-15 10:41:33

标签: javascript

我正在尝试创建一个类,其中从给定数组访问的值是类参数的依赖项。

我有一个看起来像这样的数组:

const wstv = [{
  "shortName": "DMW",
  "toExport": false,
  "longName": "Dennis Manuel Walhter",
  "date": "15.06.1978",
  "value": 3
}, {
  "shortName": "RTW",
  "toExport": true,
  "longName": "Ronald T. Wellov",
  "date": "02.11.1966",
  "value": 1,
}];

我想创建一个类,该类查找数组对象的索引,然后将信息输出到文档。

const Bund = class Bund {
//expected input: (arrayName, valueOfArray[index].shortname to display
    constructor(vrbnd, krzl) { 
        this.vrbnd = vrbnd;
        this.krzl = krzl;
    }

  getElement(vrbnd, krzl){
        const index = vrbnd.krzl.findIndex(shortName => shortName === this.krzl);
        return index
    } 
//expected output: position of the given value of shortName in the given arrayName i.e. 0

    draw() {
        return this.toDraw();
    }

    toDraw() {
    return function(){
    document.write(vrbnd[getElement].longName + " " + vrbnd[getElement].date)
    }
    }
//ecpected output: given arrayName[index].longName i.e. "Dennis Manuel Walhter"
}

然后,我想创建一个类对象var dmw = new Bund(wstv, dmw);,然后调用dmw.draw();。这样做的全部目的是在div中显示信息。由于最终数据集由大约15个数组组成,总共约有250个对象,因此我需要能够将这些参数传递给类对象。

理想的是,之后我可以写类似的东西

for(let i = 0; i < givenArray.length; i++){
const givenArray[i].shortname = new Bund(givenArray, givenArray[i].shortName);
givenArray[i].shortname.draw();
}

显示数组的所有元素。

是否可以将参数传递给类以在给定数组中搜索给定值?

此外,我很清楚getElement()“搜索函数”不能像这样工作,但是我似乎找不到解决方案来搜索对象内部原型值数组中的对象位置。 (我希望这句话有道理...)

编辑: 关于这个问题似乎有些困惑,所以我将尝试澄清。

我有多个数组。我想创建一个可以将以下信息传递给的类: 我要从中访问数据的数组的名称; ([this.arrayName]) 对象自变量之一的值(来自我要查找的数组中的对象),以从该对象获取其余所需信息; ([this.valueOfObjectArgument]是对象参数shortName中的字符串)

我的班级应该能够从每个班级对象获取和使用所需的信息。 类本身应该获取该信息([this.arrayName][this.valueOfObjectArgument],并将其传递给一个函数(getElement()),该函数为我提供[this.valueOfObjectArgument][this.arrayName]的位置({.shortName,因为我知道我在哪里寻找该值)并返回[this.arrayName]中的位置。第二个函数然后获取返回值getElement()(一个整数,我在数组中查找的对象的位置),然后将该对象的所有信息显示到html元素。

我希望这会有所帮助。

2 个答案:

答案 0 :(得分:0)

我认为您的问题是工程过度。 使用for loop将有助于您轻松获取索引。然后,您只需比较键/值并返回所需的键/值。告诉我是否有帮助

function searchForShortInArray(shortName) {
  for (let i = 0; i < wstv.length; i++) {
    if (wstv[i].shortName == shortName) {
      return {index: i, entry: wstv[i]}
    }
  }
}

console.log(searchForShortInArray("RTW"));

输出:

{ index: 1,
  entry:
   { shortName: 'RTW',
     toExport: true,
     longName: 'Ronald T. Wellov',
     date: '02.11.1966',
     value: 1 } }

答案 1 :(得分:0)

您可以使用 IndexOf() 方法检查该特定值在该数组中的位置或索引,然后控制台日志数组[index]