【问题标题】:IndexOf array with objects [closed]带有对象的 IndexOf 数组[关闭]
【发布时间】:2017-10-20 16:51:01
【问题描述】:

我有一个包含对象的数组。我试过indexOf,但它不起作用。

let tags = [];

let tag = {
  text: "hello",
  element: document.createElement('span')
};
tags.push(tag);

console.log(tags.indexOf("hello"));

我正在尝试类似的东西,标签有一些我不想添加所有代码的值。

是否有解决方案,仅将数组中的文本与字符串进行几行比较?

【问题讨论】:

  • 那不是数组。
  • 这是一个对象。
  • 我编辑了,我错过了数组对不起
  • 试试tags.filter(tag => tag.text === 'hello')
  • let tags[];是什么语法?为什么你会认为 indexOf 调用像 hello 这样的字符串会以某种方式匹配作为对象的元素?

标签: javascript arrays object indexof


【解决方案1】:

您可以使用array#filter 过滤掉包含您给定文本的标签。

let tags = [{
        text: 'hello',
        element: document.createElement('span')
}, {
        text: 'there',
        element: document.createElement('div')
}, {
        text: 'world',
        element: document.createElement('span')
}, {
        text: 'hello',
        element: document.createElement('span')
}];

let result = tags.filter(tag => tag.text === 'hello');
console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }

【讨论】:

    【解决方案2】:

    接受的答案返回一个数组,其中包含所有通过过滤功能的标签。但最初的问题似乎是在寻找一种找到特定标签索引的方法。你可以使用Array.prototype.findIndex,它接受一个函数来测试:

    tags.findIndex(tag => tag.text === 'hello')
    

    【讨论】:

    • 真正的问题是,我想要一个函数来测试标签是否已经存在于对象数组中。我的问题措辞不当。但是,是的,也感谢您的回答!
    猜你喜欢
    • 1970-01-01
    • 2015-04-22
    • 1970-01-01
    • 2019-09-15
    • 1970-01-01
    • 2012-01-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多