【发布时间】:2020-02-02 06:41:54
【问题描述】:
我有两个数组;一个带有子字符串,另一个带有对象。
我想获得一个对象数组,其中这些对象包含子字符串数组中的任何子字符串。
到目前为止,我已经尝试使用filter 和findIndex。如果子字符串相同,则每种方法都有效。在这种情况下,即使indexOf 也不起作用。我不是 javascript 人,所以可能我做错了什么。
脚本
var strings = ['12', 'sv', 'eli', '23', '34'];
var data = [
{
a: 349531284734,
b: "sv123eippppppeli",
c: "aaabbbccc"
},
{
a: 1111123333312,
b: "ccccccccccccs2222",
c: "aaabbbccc"
},
{
a: 2222234,
b: "elllllllla",
c: false
},
];
// attempt 1
var results = data.filter(arr =>
Object.keys(arr).some(key => {
return String(arr[key]).toLowerCase().includes(strings) // or indexOf
})
);
// attempt 2 with only one data index
var obj = Object.values(data[0]);
var results = strings.some(s => obj.includes(s)) // or indexOf or findIndex;
说明
在这个给定子字符串的例子中,只有data[0] 是匹配的,因为它至少包含strings 数组中的一个子字符串。
如何在不使用“for 循环”的情况下完成这项工作?
谢谢
【问题讨论】:
-
给定输入的预期输出是什么?
-
它需要返回匹配的对象。因此,如果数据包含数组中的字符串,则需要返回。如果 substring 是
['aa', 'bb']而 object 是{a: 1, b: "oo", c: "aabb"}它需要返回那个对象。 -
developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/… 虽然如此,但 String.prototype.includes 期望参数是另一个字符串,而不是字符串数组
-
@Taplar include 也应该可以工作,正如 Dacre Denny 在回答中所证明的那样。
-
@Taplar 啊,是的。对不起。我的错误
标签: javascript object filter include indexof