我最初有一个对象测试,它有一些值。在测试中有一个名为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)

答案 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;
答案 1 :(得分:0)
试试这个
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;
答案 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;