使用新值在Javascript中更新对象

时间:2017-09-07 15:05:35

标签: javascript

我最初有一个对象测试,它有一些值。在测试中有一个名为someContent的变量。它最初是空的。

我有一个键列表,我需要从中查找不同服务的值。

我将列表存储在我的测试对象中。一旦我在myResults中得到响应,我是否有办法将结果再次存储在test中,其中包含键的值。如果价值不存在,我想知道并将其作为" N / A"

我期待的输出是: var test = {x:10, y:10, results: {"B": 45, "C":30, "D": "N/A"}};

一种方法是遍历整个列表,并更新测试。还有更好的方法吗?



var test = {
  x: 10,
  y: 10,
  someContent: []
};
var list = ["B", "C", "D"];
test.someContent = list;
var myResults = {
  "B": 45,
  "C": 30
};

console.log(test)




5 个答案:

答案 0 :(得分:1)

你是说这个意思吗?使用对象而不是数组

将列表用作键



JPanel




将结果用作键 - 初始列表具有N / As



var test = {
  x: 10,
  y: 10,
  results: {}
};
var list = ["B","C","D"];
var myResults = {
  "B": 45,
  "C": 30
};
for (var i=0;i<list.length;i++) {
  test.results[list[i]]=myResults[list[i]] || "N/A"; // only update if there is a value
}

console.log(test)
&#13;
&#13;
&#13;

答案 1 :(得分:0)

试试这个

&#13;
&#13;
    var list = ["B", "C", "D"];
        
        var myResults = {
          "B": 45,
          "C": 30
        };
    
    var test = {
          x: 10,
          y: 10,
          results: {}
        };
        
      list.forEach(function(v) {
            test.results[v] = myResults[v] || "N/A";
   
      });
        
        console.log(test);
&#13;
&#13;
&#13;

答案 2 :(得分:0)

你可以尝试这样的事情。

var test = {
  x: 10,
  y: 10,
  someContent: []
};
var list = ["B", "C", "D"];
test.someContent = list;
var myResults = {
  "B": 45,
  "C": 30
};
test.result = list.map(function(element, index) {
  return myResults[element] || 'N/A';
});
console.log(test);

答案 3 :(得分:0)

您可以在此处使用reduce

这里我们遍历test.someContent中的数组并将test.results[key]的值设置为相应myResult属性的值,如果键也是myResults或'N / A'。

test.results = test.someContent.reduce((p, c) => {

  // If the element is a key in myResults return the value, or N/A
  p[c] = (c in myResults) ? myResults[c] : 'N/A';
  return p;

// Pass in an initial empty object for test.results
}, {});

<强> DEMO

答案 4 :(得分:-2)

只需添加结果即可进行测试:

test.results = {"B": 45, "C":30, "D": "N/A"};

或者如果它来自变量:

test.results = myResults;