【问题标题】:Get json string name from json variables using javascript/jquery使用 javascript/jquery 从 json 变量中获取 json 字符串名称
【发布时间】:2017-07-12 22:40:38
【问题描述】:

我需要一种方法来获取数组的标题/名称,只需在 Javascript 中检测该数组内部的值。

我有一个 json 数组,其中有 greetingfood 的数组。变量x 等于hi,变量y 等于pizza


    var $arrays = {问候语:['hello', 'hi'], food: ['pizza', 'cookie']};
    var x = '嗨',
        y = '比萨';

我现在需要为x 返回greeting 的名称,为y 返回food 的名称。

如果(x=='嗨'){ 警报($array.greeting); // alert('问候'); } 如果(y=='比萨'){ 警报($array.food); // 警报('食物'); }

在 Javascript 或 jQuery 中,哪种方式会更好,怎么样?

【问题讨论】:

  • 在 javascript 中一个 = 是赋值 == 或 ==== 是条件评估
  • 这与jQuery无关。另外,为什么要在引号中创建对象?

标签: javascript arrays json


【解决方案1】:

根据包含数组的对象的大小/结构,您可以简单地遍历它们的键并找到其值(数组)包含您要查找的值的键。这是它的外观。

var $arrays = {
  "greeting": ['hello', 'hi'],
  "food": ['pizza', 'cookie']
};
var x = 'hi',
    y = 'pizza';

function getContainerName(value) {
  return Object.keys($arrays).find(function(key) {
    return $arrays[key].find(function(elem) {
      return elem === value;
    })
  });
}

console.log(getContainerName(x));
console.log(getContainerName(y));

或者在 ES6 语法中

return Object.keys($arrays).find(key => $arrays[key].find(elem => elem === value));


UPDATE - 要搜索值数组并查找包含数组中所有值的属性的名称,您可以结合使用.every() 函数使用上面的代码,如下所示:

y = ['chips', 'pizza'], x = {"food":['banana', 'carrot', 'pizza', 'wheat', 'chips']};

function getContainerName(obj, values) {
  return Object.keys(obj).find(function(key) {
    return values.every(value => obj[key].find(function(elem) {
      return elem === value;
    }));
  });
}

console.log(getContainerName(x, y));

【讨论】:

  • 有点晚了,如果 x 是一个需要在该数组中找到特定值的数组,这会起作用吗?例如。 y = ['chips', 'pizza'], x = {"food":['banana', 'carrot', 'pizza', 'wheat', 'chips']} 所以,它需要在 x 数组中找到薯条和披萨,所以 console.log(getContainerName(x)) 会返回 food?
  • @Ackados 已更新。看看
  • 太棒了,最后一件事,我尝试修改它以使数组中不仅仅是food,并添加了greetings,但是当我在y中更改pizza时出现未定义的错误到hijsfiddle.net/u1zLm71f
  • @Ackados 好吧,这比您想象的更能改变问题。你应该提出一个新问题,我可以在那里回答。
猜你喜欢
  • 2022-12-15
  • 2021-05-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-13
  • 1970-01-01
相关资源
最近更新 更多