使用新值更新Javascript中的对象

使用新值更新Javascript中的对象,javascript,Javascript,我最初有一个对象测试,它有一些值。在测试内部有一个名为someContent的变量。它最初是空的 我有一个键列表,我需要从不同的服务中找到这些键的值 我将列表存储在我的测试对象中。一旦我在myResults中得到响应,是否有办法将结果再次存储在test中,其中包含键的值。如果价值不存在,我想知道并将其作为“不适用” 我期望的结果是: var test={x:10,y:10,结果:{“B”:45,“C”:30,“D”:“N/A”} 一种方法是循环遍历整个列表,并更新测试。有更好的办法吗 var测

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

我有一个键列表,我需要从不同的服务中找到这些键的值

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

我期望的结果是: var test=
{x:10,y:10,结果:{“B”:45,“C”:30,“D”:“N/A”}

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

var测试={
x:10,
y:10,
someContent:[]
};
风险值列表=[“B”、“C”、“D”];
test.someContent=列表;
var myResults={
“B”:45,
“C”:30
};

console.log(test)
你是说这个?使用对象而不是数组

使用列表作为键

var测试={
x:10,
y:10,
结果:{}
};
风险值列表=[“B”、“C”、“D”];
var myResults={
“B”:45,
“C”:30
};

对于(var i=0;i只需将结果添加到测试中,如下所示:

test.results = {"B": 45, "C":30, "D": "N/A"};
或者,如果它来自一个变量:

test.results = myResults;
试试这个

var list=[“B”、“C”、“D”];
var myResults={
“B”:45,
“C”:30
};
var测试={
x:10,
y:10,
结果:{}
};
列表.forEach(函数(v){
测试结果[v]=我的结果[v]| |“不适用”;
});

console.log(test);
您可以尝试类似的方法

var测试={
x:10,
y:10,
someContent:[]
};
风险值列表=[“B”、“C”、“D”];
test.someContent=列表;
var myResults={
“B”:45,
“C”:30
};
test.result=list.map(函数(元素、索引){
返回myResults[元素]| |“不适用”;
});
console.log(test);
您可以在这里使用

在这里,我们在
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
}, {});

我用N/A不能得到结果,你能不能
测试.someContent.push(列表)
?它会把数组变成一个对象,除非你想让它变成一个对象。好吧,现在我投了赞成票。我不知道是谁投了反对票。一些讨厌的人probably@mplungjan如何将普通数组转换为您需要的格式created@mplungjan你修改了我原来的var列表这将完全飞越OP的头顶问是否有更好的方法ink这是一个更好的方法,仔细解释。我也不必编造东西让我的代码与OPs代码一起工作。如果观众无法阅读和理解某些东西,在我看来这不是一个更好的方法。为什么?这是一个社区。你从外部链接,而不是将代码保存在不受链接损坏的地方。我这里没有JSON,只有JavaScript。你误用了术语“JSON”。