基于JavaScript中的部分字符串匹配过滤对象

问题描述 投票:1回答:3

我正在尝试对此JavaScript对象进行排序,因此只返回某些行,该对象:

const baseHeroes = [
  { name: "Batman", powers: ["Strength", "Intelligence"] },
  { name: "Superman", powers: ["Strength", "Flying"] },
  { name: "Spiderman", powers: ["Spider Sense", "Webs"] },
  { name: "The Flash", powers: ["Speed"] },
  { name: "Captain America", powers: ["Strength", "Shield"] },
];

我想只返回powers部分中具有“Strength”功能的行,但是要返回包含所有数据的完整行,所以我想在完成时使用它:

const strongHeroes = [
  { name: "Batman", powers: ["Strength", "Intelligence"] },
  { name: "Superman", powers: ["Strength", "Flying"] },
  { name: "Captain America", powers: ["Strength", "Shield"] },
];

任何帮助将不胜感激。

javascript arrays object filter
3个回答
2
投票

Array.filter是你的朋友。除此之外,.includes也是你的朋友:

const baseHeroes = [
  { name: "Batman", powers: ["Strength", "Intelligence"] },
  { name: "Superman", powers: ["Strength", "Flying"] },
  { name: "Spiderman", powers: ["Spider Sense", "Webs"] },
  { name: "The Flash", powers: ["Speed"] },
  { name: "Captain America", powers: ["Strength", "Shield"] },
];

const results = baseHeroes.filter( h => h.powers.includes('Strength') );

console.log(results);

您可能还需要考虑其他一些事情,例如区分大小写以及.powers为null或者数组之外的其他内容,但这应该会让您大致了解如何进行此操作。


1
投票

我是JavaScript的新手,但以下似乎有效。

const strongHeroes = [];

const baseHeroes = [
  { name: "Batman", powers: ["Strength", "Intelligence"] },
  { name: "Superman", powers: ["Strength", "Flying"] },
  { name: "Spiderman", powers: ["Spider Sense", "Webs"] },
  { name: "The Flash", powers: ["Speed"] },
  { name: "Captain America", powers: ["Strength", "Shield"] },
];

for (var i = 0; i < baseHeroes.length; i++) {
    if (baseHeroes[i].powers.indexOf("Strength") != -1) {
        strongHeroes.push(baseHeroes[i]);
    }
}

基本上它搜索原始数组,如果幂包含字符串“Strength”,则返回Strength的开始位置,如果找不到,则返回-1。因此,如果我们在力量中找到力量,则将该阵列推送到新阵列。


-1
投票

你可以这样做:

Array.prototype.containsPattern = function(elem)
{
var results = [];
for (var i in this)
{
    if (this[i].toString().includes(elem))
    {
            results.push(this[i]);
    }
}

return results;
}
var fruits = ["Banana", "Orange", "Apple", "1,Mango", "2,Mango"];

var n = fruits.containsPattern("Mango");

在这种情况下,这个函数将返回:1,Mango,2,Mango。最棒的是你可以自定义功能来做任何你想做的事情。

希望它有所帮助,欢呼。

© www.soinside.com 2019 - 2024. All rights reserved.