繁体   English   中英

如何根据另一个数组中的值并考虑数组顺序在对象中特定键的值

[英]How to particular key's value in an object based on the values from another array and using arrays sequence in mind

我有一个带有键-值对的对象,该对象基于另一个数组的值,该数组只有与对象键匹配的键。 我想形成一个不同的数组。 请记住数组的顺序,以及我想只用对象值制作另一个数组的相同方法。

我已经尝试过使用object.entries并使用forEach来遍历对象,但无法获得所需的结果。

var arrayLegends = ["totalregisteredfirst","totalregisteredsecond", "totalregisteredfourth"];

var lengendsObj = {totalregisteredfirst: "1st visit", totalregisteredfourth: "4th visit", totalregisteredsecond: "2nd visit"}

var legendsValue = [];

Object.entries(lengendsObj).forEach(function([objKey, objValue]) {
  arrayLegends.forEach(function(value) {
    if (value === objKey ) {
      legendsValue.push(objValue);
    }
  });
});

console.log('legends value', legendsValue);

预期结果数组= ['第一次访问','第二次访问','第四次访问'];

实际结果数组= ['第一次访问','第四次访问','第二次访问'];

由于arrayLegends包含您要以正确的顺序在legendsObj中检索的键,因此只需要遍历arrayLegends并将相应的值推入legendsValuelegendsValue

 var arrayLegends = ["totalregisteredfirst","totalregisteredsecond", "totalregisteredfourth"]; var lengendsObj = {totalregisteredfirst: "1st visit", totalregisteredfourth: "4th visit", totalregisteredsecond: "2nd visit"} var legendsValue = []; arrayLegends.forEach(function(value) { legendsValue.push(lengendsObj[value]); }); console.log('legends value', legendsValue); 

看一下这个 :

let arrayLegends = ["totalregisteredfirst","totalregisteredsecond", "totalregisteredfourth"];

let lengendsObj = {totalregisteredfirst: "1st visit", totalregisteredfourth: "4th visit", totalregisteredsecond: "2nd visit"}

var legendsValue = arrayLegends.map((key) => lengendsObj[key]);

您的代码确实接近达到您想要的结果,您只需要使用arrayLegends作为外部循环,并使用Object.entries(lengendsObj)作为内部循环:

 var arrayLegends = ["totalregisteredfirst","totalregisteredsecond", "totalregisteredfourth"]; var lengendsObj = {totalregisteredfirst: "1st visit", totalregisteredfourth: "4th visit", totalregisteredsecond: "2nd visit"} var legendsValue = []; arrayLegends.forEach(function (value) { Object.entries(lengendsObj).forEach(function([objKey, objValue]) { if (value === objKey ) { legendsValue.push(objValue); } }); }); console.log('legends value', legendsValue); 

JavaScript不能保证对象顺序 对对象的迭代不一定会在独立运行时以相同的顺序完成。 而是遍历数组; 确实有保证的订单。

var arrayLegends = ["totalregisteredfirst","totalregisteredsecond", "totalregisteredfourth"];

var legendsObj = {totalregisteredfirst: "1st visit", totalregisteredfourth: "4th visit", totalregisteredsecond: "2nd visit"}

var legendsValue = [];

arrayLegends.forEach(k => {
    legendsValue.push(legendsObj[k]);
});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM