问题描述
我只想知道如何使用 filter 方法返回 name 属性等于“Bob”的对象的索引。 (在这种情况下,为简单起见,只有一个索引)
data.json
[
{
"index": "14","name": "Bob","age": "23",},{
"index": "23","name": "John","age": "30",{
"index": "17","age": "25",]
app.js
const data = require("./data.json");
const searchword = "Bob";
const result = data.filter((word) => ???word === searchword???);
console.log(result);
应该显示索引:14,17
解决方法
这就像一个 filter
和一个 map
const data = [
{
"index": "14","name": "Bob","age": "23",},{
"index": "23","name": "John","age": "30",{
"index": "17","age": "25",]
const searchWord = "Bob";
const result = data.filter(x => x.name == searchWord) // find by searchWord
.map(x => x.index); // get the index
console.log(result.join(",")); // result is an array
使用 reduce
方法
const data = [
{
index: "14",name: "Bob",age: "23",{
index: "23",name: "John",age: "30",{
index: "17",age: "25",];
const getIndexes = (arr,word) =>
arr.reduce(
(acc,{ index,name }) => (name === word ? acc.concat(index) : acc),[]
).toString();
console.log(getIndexes(data,"Bob"));