Javascript JS-如何通过键从对象获取值

Javascript JS-如何通过键从对象获取值,javascript,Javascript,我有一个名为data的对象,如下所示: var data = { operators: { operator1: { top: 20, left: 20, properties: { title: 'Operator 1', inputs: {}, outputs: { output_1: { label: 'Output 1', },

我有一个名为
data
的对象,如下所示:

var data = {
  operators: {
    operator1: {
      top: 20,
      left: 20,
      properties: {
        title: 'Operator 1',
        inputs: {},
        outputs: {
          output_1: {
            label: 'Output 1',
          },
          output_2: {
            label: 'Output 2',
          }
        }
      }
    },
    operator2: {
      top: 80,
      left: 300,
      properties: {
        title: 'Operator 2',
        inputs: {
          input_1: {
            label: 'Input 1',
          },
          input_2: {
            label: 'Input 2',
          },
          input_3: {
            label: 'Input 3',
          },
        },
        outputs: {}
      }
    },
  },
};
如何通过键从
数据中获取值

function myFunction(data, key) {
  //Find in data with key, and return value.
}

结果:
var Result=myFunction(数据,'output_1')
=
output 1
(按标题获取)。

一个简单的解决方案可以是:

function myFunction(data,key){
  if(data[key]){
    return data[key];
  }else{
    return myFunction(data[key],key);
  }
}

一个简单的解决方案可以是:

function myFunction(data,key){
  if(data[key]){
    return data[key];
  }else{
    return myFunction(data[key],key);
  }
}

您可以使用迭代和递归的方法,并在发现问题时尽早退出

如果找到对象,函数
getValue
将返回一个对象,否则返回false

要获取值,可以获取属性

函数getValue(对象、键){
var结果;
返回对象。键(对象)。一些(函数(k){
如果(k==键){
结果={value:object[k]};
返回true;
}
if(object[k]&&typeof object[k]=='object'&&(result=getValue(object[k],key))){
返回true;
}
})&&result;
}
变量数据={运算符:{operator1:{top:20,left:20,属性:{title:'Operator 1',输入:{},输出:{output_1:{label:'output 1'},output_2:{label:'output 2'}}},运算符2:{top:80,left:300,属性:{title:'Operator 2',input:{input_1:{label:'input 1'},input_2:{label:'input_3:{label:'Input 3',foo:null},output:{};
log(getValue(数据,'output_1').value);//{label:'output 1'}
console.log(getValue(数据'foo').value);//null
log(getValue(数据,'bar');//false

console.log(getValue(data,'bar').value);//未定义
您可以使用迭代和递归的方法,如果找到,可以提前退出

如果找到对象,函数
getValue
将返回一个对象,否则返回false

要获取值,可以获取属性

函数getValue(对象、键){
var结果;
返回对象。键(对象)。一些(函数(k){
如果(k==键){
结果={value:object[k]};
返回true;
}
if(object[k]&&typeof object[k]=='object'&&(result=getValue(object[k],key))){
返回true;
}
})&&result;
}
变量数据={运算符:{operator1:{top:20,left:20,属性:{title:'Operator 1',输入:{},输出:{output_1:{label:'output 1'},output_2:{label:'output 2'}}},运算符2:{top:80,left:300,属性:{title:'Operator 2',input:{input_1:{label:'input 1'},input_2:{label:'input_3:{label:'Input 3',foo:null},output:{};
log(getValue(数据,'output_1').value);//{label:'output 1'}
console.log(getValue(数据'foo').value);//null
log(getValue(数据,'bar');//false

console.log(getValue(data,'bar').value);//未定义的
“类似Json数据的值”-它是一个对象。;)检查此问题的答案:向函数传递键时,
按标题获取
是什么意思。“类似Json数据的值”-它是一个对象。;)检查这个问题的答案:当你向函数传递一个键时,你所说的“按标题获取”是什么意思。我可以得到相反的结果吗?例如:
Output 1
=>
Output\u 1
Output 1
是唯一的)你的意思是,你想按值搜索吗?只需反向检查
对象[k]===value
并返回键而不是值。没错!!:D我能得到相反的结果吗?例如:
输出1
=>
输出1
输出1
是唯一的)你的意思是,你想按值搜索吗?只需反向检查
对象[k]==value
并返回键而不是值。没错!!:D