遍历数组元素并对比,为数组追加存在性标识值
解决方案
首先要指出你代码里的一个问题:b数组的写法有误,[AED,AFN,AMD]会触发未定义变量错误,因为这些值不是字符串常量,正确写法需要把元素用引号包裹成字符串:var b = ["AED", "AFN", "AMD"];
接下来直接实现需求:遍历数组a的每个子数组,检查子数组第一个元素是否存在于b中,存在则追加1,否则追加0。
完整实现代码
var a = [["AED",1],["AFN",22.08086],["ALL",27.171554],["AMD",105.058803], ["ANG",0.487406],["AOA",227.493716],["ARS",95.308373],["AUD",0.420237],["AWG",0.487406], ["AZN",0.462914],["BAM",0.490727],["BBD",0.544588]]; // 修正b数组的字符串写法 var b = ["AED", "AFN", "AMD"]; // 遍历处理每个子数组 a.forEach(item => { // 判断当前子数组的代码是否在b中,追加对应数值 item.push(b.includes(item[0]) ? 1 : 0); }); // 输出最终结果 console.log(a);
最终输出结果
[["AED",1,1],["AFN",22.08086,1],["ALL",27.171554,0],["AMD",105.058803,1], ["ANG",0.487406,0],["AOA",227.493716,0],["ARS",95.308373,0],["AUD",0.420237,0],["AWG",0.487406,0],["AZN",0.462914,0],["BAM",0.490727,0],["BBD",0.544588,0]]
可选优化(不修改原数组)
如果不想改动原数组a,可以用map方法生成新数组:
var result = a.map(item => [...item, b.includes(item[0]) ? 1 : 0]); console.log(result);
内容的提问来源于stack exchange,提问作者vellai durai
相关产品推荐
相关产品推荐

