Javascript 从特定密钥中提取密钥值

Javascript 从特定密钥中提取密钥值,javascript,node.js,express,Javascript,Node.js,Express,假设json为: const details = { "something1":1, "something2":20, "something3":123, "something4":[{"a":"apple","b":"ball"}, "something5":1211 } 为

假设json为:

const details = {
    "something1":1,
    "something2":20,
    "something3":123,
    "something4":[{"a":"apple","b":"ball"},
    "something5":1211
}
为此,我尝试:

let final = {}

for (let keys in details) {
    // console.log(keys)
    if (keys == 'something1'|| 'something2'|| 'something3') {
        final[keys] = details[keys]
    }
}
但是它给我的结果和细节一样

预期O/p应为

console.log(final) => {"something1":1,"something2":20,"something3":123}
您可以
filter()
对象的条目,然后使用
object.fromEntries

const详细信息={
“某物1”:1,
“某物2”:20,
“某物3”:123,
“something4”:[{“a”:“apple”,“b”:“ball”}],
“某物5”:1211
}
常量移除道具=(对象,道具)=>(
Object.fromEntries(Object.entries(obj.filter)([k,)]=>!props.includes(k)))
)
const res=removeProps(细节,['something1','something2']);
console.log(res)
您可以
filter()
对象的条目,然后使用
object.fromEntries

const详细信息={
“某物1”:1,
“某物2”:20,
“某物3”:123,
“something4”:[{“a”:“apple”,“b”:“ball”}],
“某物5”:1211
}
常量移除道具=(对象,道具)=>(
Object.fromEntries(Object.entries(obj.filter)([k,)]=>!props.includes(k)))
)
const res=removeProps(细节,['something1','something2']);

console.log(res)
问题在于
键=='something1'| | |'something2'| |'something3'

const详细信息={
“某物1”:1,
“某物2”:20,
“某物3”:123,
“something4”:[{“a”:“apple”,“b”:“ball”}],
“某物5”:1211,
}
设final={}
用于(让钥匙进入详细信息){
//console.log(键)
如果(键=='something1'| |键=='something2'| |键=='something3'){
最终[关键点]=详细信息[关键点]
}
}

console.log(final)
问题在于
键=='something1'| | |'something2'| |'something3'

const详细信息={
“某物1”:1,
“某物2”:20,
“某物3”:123,
“something4”:[{“a”:“apple”,“b”:“ball”}],
“某物5”:1211,
}
设final={}
用于(让钥匙进入详细信息){
//console.log(键)
如果(键=='something1'| |键=='something2'| |键=='something3'){
最终[关键点]=详细信息[关键点]
}
}

console.log(final)
您可以使用一个具有解构功能的函数并获得一个新对象

const
getParts=({something1,something2,something3})=>({something1,something2,something3}),
细节={something 1:1,something 2:20,something 3:123,something 4:[{a:“苹果”,b:“球”},something 5:1211},
最终=获取零件(细节);

控制台日志(最终)您可以使用具有解构功能的函数来获取新对象

const
getParts=({something1,something2,something3})=>({something1,something2,something3}),
细节={something 1:1,something 2:20,something 3:123,something 4:[{a:“苹果”,b:“球”},something 5:1211},
最终=获取零件(细节);

控制台日志(最终)已经有很好的答案说明了如何解决这个问题,但它们没有解释为什么代码不起作用

原因是您误解了此布尔条件的作用:

keys == 'something1'|| 'something2'|| 'something3')
它的意思是:键是其中的任何一个。
这确实意味着:

  • 如果
    keys==“something1”
  • 或者如果
    'something2'
  • 或者如果
    'something3'
  • 您的第二个和第三个or表达式只是普通字符串。
    任何非空字符串的计算结果都是布尔值
    true

    //非空字符串为布尔值TRUE
    log(`Boolean'something2`,Boolean'something2');
    //空字符串是布尔值FALSE
    
    log(`Boolean:''',Boolean('')已经有很好的答案说明了如何解决这个问题,但它们没有解释为什么代码不起作用

    原因是您误解了此布尔条件的作用:

    keys == 'something1'|| 'something2'|| 'something3')
    
    它的意思是:键是其中的任何一个。
    这确实意味着:

  • 如果
    keys==“something1”
  • 或者如果
    'something2'
  • 或者如果
    'something3'
  • 您的第二个和第三个or表达式只是普通字符串。
    任何非空字符串的计算结果都是布尔值
    true

    //非空字符串为布尔值TRUE
    log(`Boolean'something2`,Boolean'something2');
    //空字符串是布尔值FALSE
    
    log(`Boolean:''',Boolean('')感谢您抽出时间并提供适当的解释。:)感谢您抽出时间并提供适当的解释。:)