我正在尝试对此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"] },
];
任何帮助将不胜感激。
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或者数组之外的其他内容,但这应该会让您大致了解如何进行此操作。
我是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。因此,如果我们在力量中找到力量,则将该阵列推送到新阵列。
你可以这样做:
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。最棒的是你可以自定义功能来做任何你想做的事情。
希望它有所帮助,欢呼。