请问用js怎么从json里提取指定对象?

比如一个json

[{
    "name": "a",
    "value": "a-a"
}, {
    "name": "b",
    "value": "b-b"
}, {
    "name": "c",
    "value": "c-c"
}, {
    "name": "d",
    "value": "0",
}, {
    "name": "e",
    "value": "m"
}, {
    "name": "tt",
    "value": "o"
}]

怎么提取出name为tt的这个对象

{
"name":"tt",
"value":"o"
}

且只要这一个对象并且里面的全部字段

回复
阅读 1.3k
5 个回答
var arr = [{
    "name": "a",
    "value": "a-a"
}, {
    "name": "b",
    "value": "b-b"
}, {
    "name": "c",
    "value": "c-c"
}, {
    "name": "d",
    "value": "0",
}, {
    "name": "e",
    "value": "m"
}, {
    "name": "tt",
    "value": "o"
}]

function findItem(options, name) {
    return options.find(item => item.name === name) || {};
}

findItem(arr, "tt");

let res = list.find(item => item.name === 'tt')

可以使用filter和find查找,如果列表中有两个name属性的,需要使用filter过滤出来,如果只需要找到第一个,则使用find。

let json = [{
    "name": "a",
    "value": "a-a"
},
{
    "name": "tt",
    "value": "l"
},{
    "name": "b",
    "value": "b-b"
}, {
    "name": "c",
    "value": "c-c"
}, {
    "name": "d",
    "value": "0",
}, {
    "name": "e",
    "value": "m"
}, {
    "name": "tt",
    "value": "o"
}]

// 使用find
let brr=json.find(item => item.name == 'tt');
console.log(brr)
// {name: 'tt', value: 'l'}

// 使用filter
let brr=json.filter(item => item.name == 'tt')
console.log(brr);
[
    {name: 'tt', value: 'l'},
    {name: 'tt', value: 'o'}
]
let brr=json.filter(item => item.name == 'tt')
let json = [{
    "name": "a",
    "value": "a-a"
}, {
    "name": "b",
    "value": "b-b"
}, {
    "name": "c",
    "value": "c-c"
}, {
    "name": "d",
    "value": "0",
}, {
    "name": "e",
    "value": "m"
}, {
    "name": "tt",
    "value": "o"
}]

let jsonArr = JSON.parse(json)
const obj = jsonArr.find(x => x.name === 'tt')

楼上大佬已经给出正常解决方案了,我说个别的方法,如果你使用 Vite ,Vite 支持 json 导入,支持导入整个 json 对象,也支持按需导入根节点。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏